[英]How to click links one by one with Selenium webdriver and Python
网站顶部菜单有 6 个链接。 我可以像这样获得此链接的列表:
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'
。 据我了解,此错误是由于WebElement
实例和网页的 DOM 之间的连接在重新加载页面(单击链接)后被破坏而引发的。
在这里我应该注意到顶部菜单在所有页面上都是相同的。
那么,我做错了什么? 如何解决这个问题? 蒂亚!
我不太了解硒,但你应该再次选择链接 -
for i in range(0,6):
links = browser.find_elements_by_css_selector(MENU_LINKS_CSS_SELECTOR)
links[i].click()
另一种方法是做同样的事情,但使用稍微不同的方法......
for i in range(len(browser.find_elements_by_css_selector)):
link = browser.find_element_by_css_selector('ul > li:nth-child({})'.format(i + 1))
link.click()
这种方式稍微优化了一点,因为它不会在每次页面重新加载时都获得完整的元素数组
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.