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

Selenium爬取BscScan页面点击Age按钮触发Timeout异常解决求助

你遇到的超时异常核心原因有两个:

  1. 使用了绝对路径XPath定位Age按钮,页面动态加载的元素(比如广告、弹窗、其他动态插入的DOM节点)会改变页面整体结构,导致绝对路径匹配不到目标元素,最终触发超时。
  2. 切换到iframe后没有等待Age按钮完全加载到可点击状态,就直接执行了点击操作。

解决方案

替换原有切换iframe后的点击逻辑,改用稳定的相对路径定位+显式等待,修改后的代码片段如下:

wait.until(EC.frame_to_be_available_and_switch_to_it((By.ID, "dextrackeriframe")))
# 等待Age列的按钮可点击后执行点击
wait.until(EC.element_to_be_clickable((By.XPATH, "//th/a[text()='Age']"))).click()
# 可选:点击后等待表格第一行数据加载完成,避免后续获取表格大小的时候取值不准
wait.until(EC.visibility_of_element_located((By.XPATH, "//tbody/tr[1]/td[1]")))

额外优化建议

  • 不要使用绝对路径XPath(/html/开头的路径),只要页面DOM结构有微小变动就会定位失效,优先使用元素自身特征、相对路径做定位。
  • 如果网络环境较差,可适当调高WebDriverWait的超时时间,比如从20秒调整为30秒,减少超时概率。
  • 可以给点击操作加上简单的重试逻辑,避免偶发的页面加载波动导致点击失败:
# 点击Age按钮重试逻辑示例
retry_count = 3
while retry_count > 0:
    try:
        wait.until(EC.element_to_be_clickable((By.XPATH, "//th/a[text()='Age']"))).click()
        break
    except TimeoutException:
        retry_count -= 1
        driver.refresh()
        # 刷新后重新处理cookie同意、切换iframe的逻辑即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 01:09:01