无法在Python中使用Selenium单击过时的元素

时间:2019-03-02 00:01:50

标签: python selenium staleelementreferenceexception

我想在这个问题开头发言,说我已经阅读了有关该主题的所有其他问题,并试图实施解决方案,但仍然没有成功。 我试图在Quora的推荐屏幕中单击加号按钮:

Quora recommnedations screen

这是我的代码:

def recommendations():
  time.sleep(10)
  requests = WebDriverWait(driver, 10).until(unhidden_elements_located((By.TAG_NAME, 'svg')))

  for i in range(12):
      try:
          ActionChains(driver).click(requests[i]).perform()

      except selexcep.StaleElementReferenceException as e:
          print(e)

在等待页面加载后,它会获得所有plus元素的列表,然后遍历并尝试单击它们。我很确定它仍然可以获取正确的元素,因为该代码可以正常工作,直到它随机开始收到此错误消息为止:

Message: stale element reference: element is not attached to the page document

我现在完全不知道如何解决这个问题。

1 个答案:

答案 0 :(得分:0)

在页面加载后,似乎元素未正确加载。如下定义您的元素。

search_input = lambda: driver.find_element_by_name('q')

这是因为调用'search_input()'会重新评估lambda语句,然后再次对该元素进行查找。这样可以通过每次获取对WebElement的新引用来防止陈旧。