如何使用xpath Selenium和Python查找包含某个文本的所有元素

问题描述 投票:0回答:1

我尝试过

driver.find_elements_by_xpath("//*[contains(text()),'panel')]") 

但是它只有在大约25的情况下才会得出奇异的结果。

我想在硒网页中找到所有包含单词面板的xpath ID,并创建它们的列表。我该怎么办?

selenium selenium-webdriver xpath webdriverwait xpath-1.0
1个回答
0
投票

您问题中的xpath出现错误,不确定是不是错字,但这不会获取任何结果。还有一个额外的寄生虫。

而不是:

driver.find_elements_by_xpath("//*[contains(text()),'panel')]") 

应该是:

driver.find_elements_by_xpath("//*[contains(text(),'panel')]") 

Tip:要测试您的定位器(xpath / CSS),而不是直接在代码中使用它,请先在浏览器中进行尝试。Chrome的示例:

  1. 右键单击您要自动化的网页
  2. 单击检查并执行CTRL-F。
  3. 输入您的xpath并按Enter

您应该能够滚动浏览所有匹配的元素,并验证总匹配数


0
投票

收集所有包含特定文本的元素,例如panel使用Selenium必须为visibility_of_all_elements_located()生成WebDriverWait,并且可以使用以下Locator Strategy

  • 使用XPATHcontains()

    elements = WebDriverWait(driver, 10).until(EC.visibility_of_all_elements_located((By.XPATH, "//*[contains(., 'panel')]")))
    
  • :您必须添加以下导入:

    from selenium.webdriver.support.ui import WebDriverWait
    from selenium.webdriver.common.by import By
    from selenium.webdriver.support import expected_conditions as EC
    
© www.soinside.com 2019 - 2024. All rights reserved.