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

Selenium依赖3.11.0却启动旧版ChromeDriver 2.31求助

为啥Selenium用了旧版ChromeDriver?

嘿,这个问题我之前踩过坑!明明在build.gradle里指定了selenium-chrome-driver:3.11.0,结果启动时还是跑2.31的版本,大概率是ChromeDriver的加载优先级冲突了,咱们一步步排查:

1. 系统PATH里的旧版ChromeDriver抢了先

Selenium查找ChromeDriver的逻辑是:先看你有没有手动指定路径,要是没有,就去系统的PATH环境变量里找。如果你的PATH里早就装了2.31版本的ChromeDriver,它就会优先调用这个旧版本,完全忽略你Gradle依赖里的新版本。

解决办法:

  • 打开系统环境变量设置,找到PATH,检查里面有没有旧版ChromeDriver的存放路径,把它删掉;
  • 或者把Gradle依赖中ChromeDriver的实际路径(一般在~/.gradle/caches/modules-2/files-2.1/org.seleniumhq.selenium/selenium-chrome-driver/3.11.0/xxx/chromedriver)加到PATH最前面,让它优先被找到。

2. 代码里硬编码了旧版ChromeDriver路径

有没有可能你在测试代码里写了类似这样的代码?

System.setProperty("webdriver.chrome.driver", "/path/to/old/chromedriver");

这段代码会强制指定ChromeDriver的路径,直接覆盖Gradle依赖的版本,哪怕你依赖了3.11.0也没用。

解决办法:

  • 删掉这段硬编码的代码,让Selenium自动使用Gradle依赖中的ChromeDriver;
  • 如果你确实需要手动指定,就把路径换成3.11.0版本对应的chromedriver文件路径。

3. Gradle缓存或依赖冲突搞的鬼

有时候Gradle的本地缓存里还存着旧版本的依赖,或者其他第三方依赖间接引入了旧版的selenium-chrome-driver,导致版本冲突。

解决办法:

  • 先清理Gradle缓存并重新拉取依赖,执行命令:
    ./gradlew clean build --refresh-dependencies
    
  • 然后查看项目的依赖树,检查有没有其他依赖偷偷引入了旧版ChromeDriver:
    ./gradlew dependencies
    
    如果发现有冲突,就在依赖声明里排除掉旧版本,比如:
    compile(group: 'org.seleniumhq.selenium', name: 'selenium-chrome-driver', version: '3.11.0') {
        exclude group: 'org.seleniumhq.selenium', module: 'selenium-chrome-driver', version: '2.31.0'
    }
    

额外提醒:Chrome版本和Driver版本要匹配

虽然你现在的问题是Driver版本不对,但顺便提一句:3.11.0版本的ChromeDriver对应Chrome浏览器的67-69版本,如果你的Chrome版本太高,后续可能会出现兼容性问题,记得保持两者版本匹配哦!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.26 11:08:51