我尝试过
driver.find_elements_by_xpath("//*[contains(text()),'panel')]")
但是它只有在大约25的情况下才会得出奇异的结果。
我想在硒网页中找到所有包含单词面板的xpath ID,并创建它们的列表。我该怎么办?
您问题中的xpath出现错误,不确定是不是错字,但这不会获取任何结果。还有一个额外的寄生虫。
而不是:
driver.find_elements_by_xpath("//*[contains(text()),'panel')]")
应该是:
driver.find_elements_by_xpath("//*[contains(text(),'panel')]")
Tip:要测试您的定位器(xpath / CSS),而不是直接在代码中使用它,请先在浏览器中进行尝试。Chrome的示例:
您应该能够滚动浏览所有匹配的元素,并验证总匹配数
收集所有包含特定文本的元素,例如panel使用Selenium必须为visibility_of_all_elements_located()
生成WebDriverWait,并且可以使用以下Locator Strategy:
使用XPATH和contains()
:
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