Selenium 可以确定元素的唯一性,页面加载完成,为什么还是会抛异常?

xJz666 · 2026年01月12日 · 最后由 卡丁车卡丁丁 回复于 2026年01月12日 · 126 次阅读

想要定位一个输入框元素,感觉写法没有任何问题,为什么就是找不到呢,我也加了显示等待,还是会抛异常,明明已经加载出来了呀

共收到 1 条回复 时间 点赞

这个报错不是 Selenium 直接抛出的错误,而是程序崩溃时的 “未解析回溯(unresolved backtrace)” 日志,通常出现在Selenium 驱动(如 ChromeDriver)与浏览器版本不兼容、系统环境异常,或程序底层崩溃的场景中。

核心原因(按概率排序)

  1. 驱动与浏览器版本不匹配(最常见)
    Selenium 的 ChromeDriver(或 GeckoDriver)必须与浏览器(Chrome/Firefox)的主版本号完全对应(如 Chrome 120 需对应 ChromeDriver 120.x.x)。版本不匹配会导致驱动与浏览器通信失败,进而触发程序底层崩溃,出现 “unresolved backtrace”。

  2. 系统环境缺失依赖
    例如:

    • Linux 系统缺少 Chrome 运行依赖(如 libnss3libgconf-2-4 等);
    • 无头模式(--headless)下缺少图形环境依赖;
    • 驱动文件无执行权限(Linux/macOS 下未执行 chmod +x chromedriver)。
  3. 驱动/浏览器本身的 Bug
    部分版本的 ChromeDriver/Chrome 存在兼容性 Bug(如特定版本的驱动在 Windows 下崩溃),或浏览器进程异常退出(如内存不足导致浏览器崩溃)。

解决方案(按优先级操作)

1. 优先核对 “驱动 - 浏览器版本”(必做)

2. 修复系统环境依赖

  • Linux 系统:安装 Chrome 运行依赖: bash sudo apt-get install libnss3 libgconf-2-4 libxss1 libappindicator1 libindicator7
  • 驱动权限:Linux/macOS 下给驱动加执行权限: bash chmod +x /path/to/chromedriver
  • 无头模式:若用 --headless=new(Chrome 109+ 推荐)替代旧的 --headless,减少环境依赖。

3. 更换驱动/浏览器版本

若确认版本匹配但仍崩溃,可尝试:

  • 降级/升级浏览器到稳定版本(如 Chrome 124/125 是较稳定版本);
  • 更换对应版本的驱动(避免使用测试版驱动)。

需要我帮你整理 “ChromeDriver-Chrome 版本对应表”(最新稳定版)吗?

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册