Исключение Python Selenium StaleElement

Я ищу решение для исключения 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()

Я понял основную причину из аналогичных вопросов о стеке, таких как это исключение ссылки на устаревший элемент: как решить?

Однако предлагаемое решение, то есть повторная загрузка ссылок каждый раз, когда я возвращаюсь назад, мне не подходит по соображениям производительности.

Есть ли альтернатива?

Например, заставить новую страницу открываться в новой вкладке, чтобы я мог перемещаться между двумя вкладками?

Любое другое решение приветствуется

1 ответ

      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 и перемещайтесь взад и вперед вот так. Элементы, которые вы получаете со страницы, теряются при перемещении страницы.