在动态迭代中迭代时发生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来解决这个问题,它很有效,但当然它不能解决问题的本质。我想知道有没有更好的方法来解决我的问题?

也许您在加载justjoin.it页面之前调用了find_elements_by_class_name((;稳定";。然后,当您在收集的元素中循环时,页面会继续加载并使那些收集的元素对象无效。我会尝试在调用driver.get((和调用find_elements_by_class_name((之间等待更长的时间。

当元素在页面上时发生过时的元素异常,但硒驱动程序实例无法与该元素交互。

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

1.使用"刷新"来刷新页面;navigation((。refresh(("硒方法

2.使用循环尝试点击或检查该元素的可见性,如果该元素可见或已点击退出循环

最新更新