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

Python Selenium中WebDriverWait触发NoSuchElementException无法被捕获怎么办

问题根因

  • WebDriverWait.until()运行时会内部捕获所有判定逻辑抛出的异常,只有当等待超时后,才会统一抛出selenium.common.exceptions.TimeoutException。所以你lambda表达式里find_element触发的NoSuchElementException不会透传到外层的try块,对应的except分支永远不会触发。
  • 你连通用Exception都无法捕获的核心原因是导包错误:你代码中导入的TimeoutException不是Selenium内置的异常类,而是来自requests、urllib3等其他依赖库的同名类,和Selenium抛出的异常类不匹配,因此无法命中捕获分支。你手动取消注释抛出NoSuchElementException可以被捕获,也侧面说明仅TimeoutException的导入存在问题。

解决方法

  1. 首先修正异常类的导入路径,确保使用Selenium自带的异常:
# 必须从selenium.common.exceptions导入对应异常
from selenium.common.exceptions import TimeoutException, NoSuchElementException
  1. 如果需要单独捕获元素查找的异常,不要把查找逻辑全包裹在WebDriverWait中,可以将查找逻辑拆分到单独的try块内处理,或者在until的判定函数内部自行捕获NoSuchElementException处理。
  2. 调试阶段可以给通用异常分支增加堆栈打印,确认实际抛出的异常类型,方便定位问题:
except Exception as e:
    import traceback
    traceback.print_exc()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 06:54:00