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()
このStale Element Reference Exception: How to solve?のような同様のスタックオーバーフローの質問から根本的な原因を理解しました。
ただし、提案された解決策、つまり、戻るたびにリンクを再取得することは、パフォーマンス上の理由から私には適していません。
代替手段はありますか?
たとえば、新しいページを新しいタブで開くように強制して、2 つのタブ間を移動できるようにしますか?
他の解決策は大歓迎です