You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Selenium(Python)中StaleElementReferenceException问题求助

解决Selenium的StaleElementReferenceException问题

嘿,我太懂你踩的这个坑了!你代码里的问题其实特别常见——当你调用browser.get(i.get_attribute("href"))跳转到新页面时,原来页面的DOM结构已经被销毁了,之前通过find_elements_by_css_selector获取到的components元素集合,它们的引用也就跟着失效了,所以第二次循环直接抛出了StaleElementReferenceException。

你以为find_elements会把元素引用牢牢存住,但实际上这些元素是和当前页面的DOM绑定死的,页面一刷新或者跳转,它们就变成“过期无效”的了。不过解决方法超简单,我们只需要先把所有链接提取出来存成字符串列表,再循环这个列表去访问就行,这样就完全脱离了对原页面元素的依赖。

修改后的代码长这样:

url="https://www.pla...com"
browser=Chrome(executable_path='chromedriver')
browser.get(url)

# 先把所有目标链接提取到本地列表中
links = [elem.get_attribute("href") for elem in browser.find_elements_by_css_selector('.files-new a')]

# 循环访问列表里的每个链接
for link in links:
    print(link)
    browser.get(link)
    # 这里可以添加你对每个跳转后页面的处理逻辑
    # 如果之后需要回到原页面继续操作,可以加上:browser.back()

这样修改后,不管页面怎么跳转,我们手里的都是独立的字符串链接,再也不会出现元素引用过期的问题了。另外如果你的页面加载比较慢,还可以考虑加上Selenium的显式等待,确保元素加载完成后再提取链接,避免漏掉内容~

内容的提问来源于stack exchange,提问作者Fuad Ak

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 09:42:35