【发布时间】:2019-03-02 00:01:50
【问题描述】:
我想在这个问题的开头说,我已经查看了有关此主题的所有其他问题并尝试实施解决方案,但仍然没有成功。 我正在尝试点击 Quora 推荐屏幕中的加号按钮:
这是我的代码:
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)
等待页面加载后,它会获取所有加号元素的列表,然后通过并尝试单击它们。我很确定它仍然可以获取正确的元素,因为此代码曾经可以正常工作,直到它随机开始收到此错误消息:
Message: stale element reference: element is not attached to the page document
我现在完全不知道如何解决这个问题。
【问题讨论】:
-
单击 dom 更新/重新加载的元素之一后是否有可能?如果是这样,这可能是导致问题的原因。
-
我不确定你的意思。我在这方面不是很精通,但是如果我已经点击了我想点击的内容,为什么在那之后更新 dom 会很重要?
-
当点击某个元素时,可能会重新加载 html 或更改部分内容。我想知道是否是这种情况,这就是导致陈旧异常被抛出的原因。单击某个元素后,您可能必须重新查找元素。您可以根据找到的集合的原始大小尝试 for 循环,然后重新找到类似 Pritam 在他们的答案中显示的内容。
-
我想我知道问题所在了。我试图点击的元素在一个弹出窗口中,当我找到这些元素时,我还会从它后面的主窗口中选择一些具有相同标签的元素。
标签: python selenium staleelementreferenceexception