当我尝试使用for循环单击所有链接时,硒显示陈旧错误?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当我尝试使用for循环单击所有链接时,硒显示陈旧错误?相关的知识,希望对你有一定的参考价值。

all_divs包含我得到的所有链接。我需要单击所有它们,但是当我尝试执行操作时,selenum会抛出陈旧的错误,说

“ selenium.common.exceptions.StaleElementReferenceException:消息:的元素引用是陈旧的;要么该元素不再附加到DOM,它就不在当前框架上下文,或文档已刷新“

link_div = driver.find_elements_by_css_selector("div[id='sidebar1269']")[0]


        all_divs  = link_div.find_elements_by_css_selector("div>a:last-of-type")

        print(all_divs[0])

        for i in all_divs:
            i.click()
答案

[不知道html可能给出更有效的答案,这应该可以为您带来想要的东西。单击链接后,dom很可能已更新/更改,因此您需要在单击之前重新查找元素。

link_div = driver.find_elements_by_css_selector("div[id='sidebar1269']")[0]

number_of_divs  = len(link_div.find_elements_by_css_selector("div>a:last-of-type"))

for i in range(number_of_divs):
    link_div = driver.find_elements_by_css_selector("div[id='sidebar1269']")[0]
    link_div.find_elements_by_css_selector("div>a:last-of-type")[i].click()

以上是关于当我尝试使用for循环单击所有链接时,硒显示陈旧错误?的主要内容,如果未能解决你的问题,请参考以下文章

在 for 循环中使用切换

通过硒单击链接

硒单击链接href与javascript

单击父级时仅打开一个子菜单

通过单击按钮循环浏览 Jlabel 的图像时的 for 循环问题

单击硒作为双击