Сайт имеет верхнее меню с 6 ссылками. Я могу получить список этих ссылок следующим образом:Как нажимать ссылки по одному с помощью Selenium webdriver и Python
links = browser.find_elements_by_css_selector(MENU_LINKS_CSS_SELECTOR)
После этого мне нужно щелкнуть по этим ссылкам один за другим. Если я делаю это так:
for link in links:
link.click()
Я получаю следующее сообщение об ошибке: selenium.common.exceptions.StaleElementReferenceException: Message: u'Element not found in the cache - perhaps the page has changed since it was looked up'
. Насколько я понимаю, эта ошибка возникает из-за подключения betweeb WebElement
экземпляров, а DOM на веб-странице разбивается после перезагрузки страницы (нажатие на ссылку).
Здесь я должен заметить, что верхнее меню одинаково на всех страницах.
Итак, что я делаю неправильно? Как это исправить? ТИА!
Таким образом, вы знаете исключение как вы получаете, вероятно, вызвано перезагрузкой страницы, как ссылки щелкнул. Таким образом, сохраненная ссылка «selenium» на ссылку, следующую в вашем списке, больше не будет существовать. В соответствии с ответом Svineet вам нужно будет собирать список ссылок каждый раз, когда вы хотите щелкнуть следующий, «обновить» ссылки селена на каждую ссылку. –