【问题标题】:Retrieve ID of any element using webdriver in python given value of the element在给定元素的值的python中使用webdriver检索任何元素的ID
【发布时间】:2017-04-05 17:04:17
【问题描述】:

我正在使用 selenium 在 Firefox 中记录测试用例。它记录按钮单击/或任何与此相关的操作,如下所示,

driver = self.driver
driver.get(self.base_url + "/")
driver.find_element_by_id("ctl00__mainContent_lnkforgotpassword").click()
driver.find_element_by_id("ctl00__mainContent_ucForgotPassword1_btnNext").click()

这里驱动使用 find_element_by_id 方法来访问元素,效果很好。

但我的要求是仅给出该元素的文本即可找到此 Id, 喜欢-

如果忘记密码是一个链接,我想找回这个链接的ID, 我会将 about 代码修改为,

driver.find_element_by_id(getID("Forgot Password")).click().

那么有没有办法编写getId()函数来检索链接忘记密码ID (或者在其他情况下是某个标签/按钮的 ID) 来自当前打开的页面?

【问题讨论】:

    标签: python selenium firefox


    【解决方案1】:

    您需要执行两个步骤: 1.通过链接文本获取元素 2.从那个元素获取id的属性值。

    您可以尝试类似于以下代码的方法来创建您的函数: (注:以下代码为JAVA,需要编写类似的python代码)

    WebElement ele = driver.findElement(By.linkText("Forgot Password"));
    ele.getAttribute("id");
    

    以下链接可作为参考:

    How to grab just element id - using Selenium WebDriver 2

    http://www.software-testing-tutorials-automation.com/2014/01/how-to-locate-element-by-link-text-or.html

    【讨论】:

      【解决方案2】:

      无法按照您提到的方式直接检索 ID(或任何属性)。

      但是,只有找到该 Web 元素后,您才能找到该 Web 元素的任何属性/属性。

      如下操作:

      elem = driver.find_element_by_link_text("Forgot Password") / returns Web Element, store it in some variable.
      print elem.get_attribute("id")
      print elem.get_property("id") // or use get_property
      

      参考:

      1. http://selenium-python.readthedocs.io/api.html#module-selenium.webdriver.remote.webelement

      【讨论】:

      • 这适用于链接。其他元素呢,比如按钮、标签等
      • 与链接文本相同。首先,使用其属性之一(类、文本、链接文本、名称等)识别元素,然后您可以从该 Web 元素中检索 ID(如果存在)。
      • find_element_*() API 返回 WebElement,您可以使用 WebElement API 检索 Web 元素的属性/属性。在答案中添加了 WebElement API 的参考 URL。
      猜你喜欢
      • 2020-12-21
      • 2018-02-04
      • 1970-01-01
      • 1970-01-01
      • 2018-10-18
      • 1970-01-01
      • 2017-06-02
      • 1970-01-01
      • 2014-02-25
      相关资源
      最近更新 更多