我制作脚本,搜索我有趣的字符串集,但我有错误。 我如何解决以下问题:
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()
答案 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中,实际上变为陈旧。