使用Selenium webdriver Python逐个单击链接

时间:2017-03-23 09:05:05

标签: python python-2.7 selenium selenium-webdriver

我制作脚本,搜索我有趣的字符串集,但我有错误。 我如何解决以下问题:

links = driver.find_elements_by_xpath("xpath")

for x in range(0, len(links)):
    driver.implicitly_wait(2)
    links[x].click()
    try:
        driver.implicitly_wait(3)
        DO something
        driver.back()
        print("Mission completed!!")
    except (ElementNotVisibleException, NoSuchElementException):
        driver.back()
        print("No action")

Error:
selenium.common.exceptions.StaleElementReferenceException: Message: The element reference is stale. Either the element is no longer attached to the DOM or the page has been refreshed.
in line: links[x].click()

2 个答案:

答案 0 :(得分:2)

一旦您重新定向到列表links中的新页面元素变得陈旧 - 您就不能再使用它们了。

您可以使用以下代码:

links = [link.get_attribute('href') for link in driver.find_elements_by_xpath("xpath")]
for link in links:
    driver.get(link)
    # DO something

这应该允许您获取引用列表并在循环中获取每个页面

答案 1 :(得分:1)

点击链接有什么作用?如果您在单击后导航到另一个页面,则迭代中的下一个页面不再位于DOM中,实际上变为陈旧