2013-07-22 1 views
1

Сайт имеет верхнее меню с 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 на веб-странице разбивается после перезагрузки страницы (нажатие на ссылку).

Здесь я должен заметить, что верхнее меню одинаково на всех страницах.

Итак, что я делаю неправильно? Как это исправить? ТИА!

+1

Таким образом, вы знаете исключение как вы получаете, вероятно, вызвано перезагрузкой страницы, как ссылки щелкнул. Таким образом, сохраненная ссылка «selenium» на ссылку, следующую в вашем списке, больше не будет существовать. В соответствии с ответом Svineet вам нужно будет собирать список ссылок каждый раз, когда вы хотите щелкнуть следующий, «обновить» ссылки селена на каждую ссылку. –

ответ

5

Я не знаю много селена, но вы должны выбрать ссылки снова -

for i in range(0,6): 
    links = browser.find_elements_by_css_selector(MENU_LINKS_CSS_SELECTOR) 
    links[i].click() 
+0

thx много! это решит проблему! :-) – dizpers

+0

coul вы пометили мой ответ правильно? То есть, если он сработает для вас – svineet

Смежные вопросы