Python Selenium StaleElement Exception



我正在寻找StaleElementReferenceException的解决方案,该问题在使用Selenium导航回上一页时出现。

以下是重现错误的示例代码:

from selenium.webdriver import Chrome
from selenium.common.exceptions import NoSuchElementException
browser = Chrome()
browser.get('https://stackoverflow.com/questions/')
# Closing the pop-up for cookies
try:    
browser.find_element_by_class_name('js-accept-cookies').click()
except NoSuchElementException:
pass
# Getting list of links on a StackOverflow page
links = browser.find_element_by_id('questions').find_elements_by_tag_name('a')

links[0].click()
# Going back
browser.back()
try:    
browser.find_element_by_class_name('js-accept-cookies').click()
except NoSuchElementException:
pass
# Using the old links
links[1].click()

我从类似的stackoverflow问题中了解了根本原因,比如这一个Stale元素引用异常:如何解决?

然而,由于性能原因,所提出的解决方案(即每次我导航回来时都重新绘制链接(不适合我。

还有其他选择吗?

例如,强制在新选项卡中打开新页面,以便我可以在两个选项卡之间导航?

赞赏任何其他解决方案

links =[ x.get_attribute('href') for x in driver.find_element_by_id('questions').find_elements_by_tag_name('a')]
driver.get(links[0])
driver.back()

只需获取href值,然后像这样来回移动。您从页面中获得的元素会在页面移动时丢失。

相关内容

  • 没有找到相关文章

最新更新