如何使用selenium和python创建具有相同xpath的元素列表?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何使用selenium和python创建具有相同xpath的元素列表?相关的知识,希望对你有一定的参考价值。
我需要在同一个网页上点击同一个表格中的几个元素。我想用for循环这样做但是为了执行该操作我首先需要创建这些元素的列表。
//table[@border='1']//a
这是选择表中所有元素的xpath,如何创建所有这些元素的列表?
答案
虽然@SergiyKonoplyaniy答案是正确的方向,一个接一个地解决您的问题:
- 如何创建具有相同xpath的元素列表:要创建元素列表,您需要使用
find_elements_by_xpath(xpath)
,它将创建与您指定的xpath匹配的元素列表。 - 例:
my_links = driver.find_elements_by_xpath("//table[@border='1']//a")
- 需要点击几个元素:因为你需要在几个元素上使用
click()
,你必须迭代你在List中捕获的所有元素,如下所示:for link in my_links: link.click()
- 现在最重要的方面是,根据你的xpath
//table[@border='1']//a
每个元素: 有3个不同的阶段存在,可见性和可互动性(即可点击性) 要收集List中的元素,您应该始终调用具有预期条件的服务员visibility_of_all_elements_located(locator)
,如下所示:my_list = WebDriverWait(driver, 20).until(expected_conditions.visibility_of_all_elements_located((By.XPATH, "//table[@border='1']//a")))
作为您的问题的解决方案的伪代码将是:my_links = WebDriverWait(driver, 20).until(expected_conditions.visibility_of_all_elements_located((By.XPATH, "//table[@border='1']//a"))) for link in my_links: link.click()
为了您将来的参考,如果您打算在任何特定元素上调用click()
,请始终调用具有预期条件的服务员element_to_be_clickable(locator)
,如下所示:WebDriverWait(driver, 20).until(EC.element_to_be_clickable((By.XPATH, "desired_element_xpath"))).click()
另一答案
使用find_elements而不是find_element:
links = driver.find_elements_by_xpath("//table[@border='1']//a")
for values in links:
values.click()
以上是关于如何使用selenium和python创建具有相同xpath的元素列表?的主要内容,如果未能解决你的问题,请参考以下文章
使用 Selenium 和 Robot Framework 遍历 Web 元素
如何使用 Selenium 和 Python 选择具有 unselectable="on" 属性的剑道下拉元素
如果两个类具有相同的类名,如何引用第二个类名 - 使用 selenium webdriver
如何使用 Python 和 Selenium 在 Chrome 中打开具有不同 URL 的新标签页? [复制]