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

使用Selenium Python点击表格链接下载报表遇Stale element异常如何解决

异常原因

你提前一次性获取了所有匹配的元素并存储到列表中,点击第一个元素后,哪怕页面没有发生整页跳转,只要表格区域有局部DOM刷新(比如点击后元素状态更新、表格重绘),之前缓存的所有元素引用都会直接失效,循环访问第二个元素时就会抛出StaleElementReferenceException。

解决方案

不要一次性提前缓存所有元素,改为每次循环时重新查找对应位置的元素,示例代码如下:

import time
import random
from selenium.common.exceptions import StaleElementReferenceException

# 先获取目标元素总数量
date_xpath = '//*[@id="tr-undefined"]/td[1]/span'
total_count = len(driver.find_elements_by_xpath(date_xpath))

for idx in range(total_count):
    # 每次循环重新查找元素,取对应索引的节点
    try:
        current_date = driver.find_elements_by_xpath(date_xpath)[idx]
        current_date.click()
    except StaleElementReferenceException:
        # 偶发刷新未完成的情况,重试一次即可
        current_date = driver.find_elements_by_xpath(date_xpath)[idx]
        current_date.click()
    # 等待下载完成
    time.sleep(random.randint(5, 10))
可选优化

如果点击元素后表格排序会发生变化导致索引失效,可以提前提取所有日期的唯一标识,循环时通过日期文本匹配目标元素再点击即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.13 00:00:03