我有一个表,其中有几个链接具有相同的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()#不起作用
感谢您的帮助。
答案 0 :(得分:1)
您必须使用索引到达该行,因为每次单击表中的链接时都会刷新元素索引。如果您不使用索引并尝试使用循环单击链接,则可能最终会收到StaleElementException。
下面是应该起作用的逻辑。
dladdr