1

网站有带有 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 被破坏。

在这里我应该注意到所有页面上的顶部菜单都是相同的。

那么,我做错了什么?如何解决这个问题?蒂亚!

4

2 回答 2

5

我不太了解 Selenium,但您应该再次选择链接 -

for i in range(0,6):
    links = browser.find_elements_by_css_selector(MENU_LINKS_CSS_SELECTOR)
    links[i].click()
于 2013-07-22T09:46:45.020 回答
0

另一种方法是做同样的事情,但使用稍微不同的方法......

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()

这种方式稍微优化了一些,因为每次重新加载页面时它都不会获得完整的元素数组

于 2021-04-05T21:34:55.933 回答