Итак, мой код пытается просмотреть список ссылок (видимый текст для всех из которых «Ежегодный»), а затем, находясь на новой веб-странице, перебрать около 20 лет в раскрывающемся списке лет и загрузить набор данных за каждый год. Итак, есть две петли. Мой код застревает в цикле лет - то есть для того же «Ежегодного» он получает ошибку устаревшего элемента через 2 года.
Я работаю над Chrome, и это важная часть моего кода:
Links = browser.find_elements_by_link_text("Annual")
for link in Links:
link.click()
time.sleep(20)
browser.switch_to_window(browser.window_handles[-1])
select = Select(browser.find_element_by_xpath('//select[@name="year"]'))
options = select.options
for index in range(0, len(options)):
select.select_by_index(index)
time.sleep(10)
excelbutton = browser.find_element_by_xpath('//a[img[@title="Download as Excel"]]').click()
ошибка следующая:
selenium.common.exceptions.StaleElementReferenceException: Сообщение: ссылка на устаревший элемент: элемент не прикреплен к документу страницы
Буду признателен за любую помощь! Я пытался пройти через ответы, но так как я работаю с 2 циклами, и один из них работает нормально, так как он работал до 2 лет, я не могу разобраться.
ОБНОВЛЕНИЕ: полное сообщение об ошибке:
Traceback (most recent call last):
File "abc", line 56, in <module>
select.select_by_index(index)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/selenium/webdriver/support/select.py", line 99, in select_by_index
for opt in self.options:
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/selenium/webdriver/support/select.py", line 47, in options
return self._el.find_elements(By.TAG_NAME, 'option')
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/selenium/webdriver/remote/webelement.py", line 527, in find_elements
{"using": by, "value": value})['value']
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/selenium/webdriver/remote/webelement.py", line 493, in _execute
return self._parent.execute(command, params)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/selenium/webdriver/remote/webdriver.py", line 249, in execute
self.error_handler.check_response(response)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/selenium/webdriver/remote/errorhandler.py", line 193, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.StaleElementReferenceException: Message: stale element reference: element is not attached to the page document
(Session info: chrome=67.0.3396.99)
(Driver info: chromedriver=2.40.565386 (45a059dc425e08165f9a10324bd1380cc13ca363),platform=Mac OS X 10.11.6 x86_64)