python元素异常

xa9qqrwz  于 2021-07-14  发布在  Java
关注(0)|答案(1)|浏览(369)

我正在寻找一种解决方法,解决在使用selenium导航回上一页时出现的staleelementreferenceexception问题。
下面是重现错误的示例代码:

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问题中理解了根本原因,比如一个过时的元素引用异常:如何解决?
但是,由于性能原因,建议的解决方案(即每次返回时都重新绘制链接)不适合我。
有别的选择吗?
例如,强制在新选项卡中打开新页,以便我可以在两个选项卡之间导航?
如有其他解决方案,我们将不胜感激

cwxwcias

cwxwcias1#

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值,然后像这样来回移动。在页面移动时,从页面中获取的元素会丢失。

相关问题