在给定元素值的python中使用webdriver检索任何元素的ID

Vin*_*nay 6 python firefox selenium

我正在使用 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()
Run Code Online (Sandbox Code Playgroud)

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

但我的要求是在仅给出该元素的文本的情况下找到此 Id,例如 -

如果忘记密码是一个链接,我想检索这个链接的ID,我会将关于代码修改为,

driver.find_element_by_id(getID("Forgot Password")).click().
Run Code Online (Sandbox Code Playgroud)

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

Nav*_*R B 10

无法按照您提到的方式直接检索 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
Run Code Online (Sandbox Code Playgroud)

参考:

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


Spa*_*kur 0

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

你可以尝试类似下面的代码来创建你的函数:(注意:下面的代码是JAVA,你需要编写类似的python代码)

WebElement ele = driver.findElement(By.linkText("Forgot Password"));
ele.getAttribute("id");
Run Code Online (Sandbox Code Playgroud)

以下链接将有助于作为参考:

如何仅获取元素 id - 使用 Selenium WebDriver 2

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