遍历动态可迭代时的StaleElementReferenceException

时间:2020-07-09 11:06:16

标签: python-3.x selenium selenium-chromedriver staleelementreferenceexception

我想通过遍历所有webElement来向下滚动网站,而我这样做的方式是:

driver.get('https://justjoin.it/')
driver.maximize_window()

while True:
    for web_element in driver.find_elements_by_class_name('css-1x9zltl'):
        driver.execute_script("arguments[0].scrollIntoView();", web_element)

不幸的是,几秒钟后,滚动条停止并且控制台将我抛出此异常:

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

寻找解决方案我搜索了很多网页,现在我知道为什么会出现这种类型的错误。我试图通过使用try / except来解决这个问题,但它确实可以解决问题的本质。我想知道是否有更好的方法来解决我的问题?

2 个答案:

答案 0 :(得分:0)

也许您在justjoin.it页面加载并“稳定”之前正在调用find_elements_by_class_name()。然后,当您遍历收集的元素时,页面将继续加载并使这些收集的元素对象无效。我会尝试在调用driver.get()和调用find_elements_by_class_name()之间等待更长的时间。

答案 1 :(得分:0)

当页面中的元素但硒驱动程序实例无法与该元素相交时,会发生陈旧元素异常。

以下操作可以解决陈旧元素异常

1。使用硒中的“ navigate()。refresh()”方法刷新页面

2.using循环尝试单击或检查该元素的可见性(如果该元素可见或已单击退出循环)

相关问题