如何在Selenium Python中的click /中找到表/正文中的每个元素?

时间:2019-07-19 20:27:35

标签: python selenium web-scraping selenium-chromedriver

我有一个表,其中有几个链接具有相同的LinkText,所以当我总是使用此表时,第一个元素被选中,所以不起作用:

driver.find_element_by_partial_link_text('Click here').click()

然后,我使用javascript函数通过其XPath获取table/tbody中的所有元素。它有效,并且如果我使用变量rows打印每个元素,它看起来 像这样<selenium.webdriver...element="...")>

在我当前的代码下面:

import time
from selenium import webdriver

url="http://example_url.com"
driver_path="/driver/chromedriver"
driver = webdriver.Chrome(driver_path)
driver.get (url)

rows = driver.execute_script('''function getElementByXpath(path) {..};return getElementByXpath("//*[@id='someID']/table/tbody/").rows''')

>>> for r in rows:
...     print r # This prints the elements within 'rows'
...     #some other code
...
<selenium.webdriver.remote.webelement.WebElement (session="e819b7b267ba043d4233e118c5844e1e", element="0.7287146883212632-2")>
<selenium.webdriver.remote.webelement.WebElement (session="e819b7b267ba043d4233e118c5844e1e", element="0.7287146883212632-3")>
<selenium.webdriver.remote.webelement.WebElement (session="e819b7b267ba043d4233e118c5844e1e", element="0.7287146883212632-4")>
<selenium.webdriver.remote.webelement.WebElement (session="e819b7b267ba043d4233e118c5844e1e", element="0.7287146883212632-5")>

如何对找到的每个元素进行click()

类似:

对于r行:     打印r.click()#不起作用

感谢您的帮助。

1 个答案:

答案 0 :(得分:1)

您必须使用索引到达该行,因为每次单击表中的链接时都会刷新元素索引。如果您不使用索引并尝试使用循环单击链接,则可能最终会收到StaleElementException。

下面是应该起作用的逻辑。

dladdr