python - 如何根据其在 Selenium 中以什么结尾的元素来查找元素?

标签 python selenium selenium-webdriver xpath css-selectors

我正在处理这样一种情况,每次我登录时,报告都会显示在一个表中,该表的 ID 是动态生成的,随机文本以“表”结尾。

我正在使用 selenium python 网络驱动程序自动化此表。它有语法

driver.find_element_by_xpath('//*[@id="isc_43table"]/tbody/tr[1]/td[11]').click();

帮助我编辑此语法,使其与以 "table" 结尾的表匹配。 (只生成一张表)。

最佳答案

ends-with XPath Constraint FunctionXPath 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/

相关文章:

python - 使用 scikit-learn 计算 AUC 的正确方法是什么?

python - Spark(pyspark)中的决策树模型如何可视化?

java - 更新到 Selenium 3.4 时出现 ClassCastException

java - 运行 Cucumber 测试时出现异常

python - 无法从 Raspberry Pi 发射 DC Thunder 导弹发射器

python - 将所有日期时间列 ('<M8[ns]' ) 转换为在输出到 HTML 时仅显示日期值

javascript - getText() 不起作用

java servlet while循环用mysql INSERT INTO缩短

selenium - 元素是否保证按照它们在 DOM 中出现的顺序返回?

php - ChromeOptions 不起作用 - PHP WebDriver