我正在处理这样一种情况,每次我登录时,报告都会显示在一个表中,该表的 ID 是动态生成的,随机文本以“表”结尾。
我正在使用 selenium python 网络驱动程序自动化此表。它有语法
driver.find_element_by_xpath('//*[@id="isc_43table"]/tbody/tr[1]/td[11]').click();
帮助我编辑此语法,使其与以 "table"
结尾的表匹配。
(只生成一张表)。
最佳答案
ends-with
XPath Constraint Function是 XPath v2.0 的一部分,但根据当前的实现,Selenium 支持 XPath v1.0。
根据您共享的 HTML 来识别元素,您可以使用 Locator Strategies :
XPath
使用contains()
:driver.find_element_by_xpath("//*[contains(@id,'table')]/tbody/tr[1]/td[11]").click();
此外,正如您所提到的,表的 ID 是动态生成的,因此要在所需元素上调用
click()
,您需要诱导 WebDriverWait 元素可点击,您可以使用以下解决方案:WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "//*[contains(@id,'table')]/tbody/tr[1]/td[11]"))).click()
或者,您也可以使用 CssSelector 作为:
driver.find_element_by_css_selector("[id$='table']>tbody>tr>td:nth-of-type(11)").click();
同样,您还可以使用 CssSelector 诱导 WebDriverWait 作为:
WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.CSS_SELECTOR, "[id$='table']>tbody>tr>td:nth-of-type(11)"))).click()
注意:您必须添加以下导入:
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.common.by import By
from selenium.webdriver.support import expected_conditions as EC
关于python - 如何根据其在 Selenium 中以什么结尾的元素来查找元素?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51442191/