Python Selenium 陈旧元素异常
Python Selenium StaleElement Exception
我正在寻找使用 Selenium 导航回上一页时出现的 StaleElementReferenceException 的解决方案。
这是重现错误的示例代码:
from selenium.webdriver import Chrome
from selenium.common.exceptions import NoSuchElementException
browser = Chrome()
browser.get('https://whosebug.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 Whosebug 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()
我从像这样的类似 Whosebug 问题中了解了根本原因 Stale Element Reference Exception: How to solve?
但是,出于性能原因,建议的解决方案(即每次我返回时重新获取链接)不适合我。
还有其他选择吗?
例如强制在新选项卡中打开新页面,以便我可以在两个选项卡之间导航?
感谢任何其他解决方案
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值,如此往复。您从页面获得的元素在页面移动时会丢失。
我正在寻找使用 Selenium 导航回上一页时出现的 StaleElementReferenceException 的解决方案。
这是重现错误的示例代码:
from selenium.webdriver import Chrome
from selenium.common.exceptions import NoSuchElementException
browser = Chrome()
browser.get('https://whosebug.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 Whosebug 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()
我从像这样的类似 Whosebug 问题中了解了根本原因 Stale Element Reference Exception: How to solve?
但是,出于性能原因,建议的解决方案(即每次我返回时重新获取链接)不适合我。
还有其他选择吗?
例如强制在新选项卡中打开新页面,以便我可以在两个选项卡之间导航?
感谢任何其他解决方案
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值,如此往复。您从页面获得的元素在页面移动时会丢失。