0

我想通过循环浏览所有 webElements 来向下滚动网站,我正在这样做:

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 来解决这个问题,它可以工作,但当然它并不能解决问题的本质。我想知道有没有更好的方法来解决我的问题?

4

2 回答 2

0

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

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

1.在selenium中使用“navigate().refresh()”方法刷新页面

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

于 2020-07-10T05:35:52.190 回答
0

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

于 2020-07-09T14:29:47.710 回答