繁体   English   中英

如何用Selenium webdriver和Python一一点击链接

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM