Chrome 64搭配ChromeDriver时driver.navigate().to("url")失效求助
我之前在Maven+Cucumber项目里也碰到过这种诡异的突发问题——前一天还正常运行的导航功能突然罢工,排查下来大多是Chrome和ChromeDriver的版本兼容性在搞鬼,给你几个靠谱的解决方向:
1. 先确认版本对应关系(核心!)
ChromeDriver和Chrome的版本绑定非常严格,你当前用的ChromeDriver 2.34.522940只支持Chrome 61-63版本,但你的Chrome是64.0.3282.140,这明显是版本不匹配了。哪怕昨天正常,可能是临时缓存或者环境状态掩盖了问题,现在触发了兼容性bug。
Chrome 64对应的正确ChromeDriver版本是2.36(支持Chrome 63-65),或者你也可以用2.35(支持Chrome 62-64),优先选2.36更稳定。
2. 在Maven里更新ChromeDriver依赖
直接修改你的pom.xml,把ChromeDriver的依赖版本改成对应版本,比如:
<dependency> <groupId>org.seleniumhq.selenium</groupId> <artifactId>selenium-chrome-driver</artifactId> <version>3.11.0</version> <!-- 这个版本会对应ChromeDriver 2.36 --> </dependency>
或者用WebDriverManager自动管理版本,不用手动对应:
// 在初始化Driver前添加这行代码 io.github.bonigarcia.wdm.WebDriverManager.chromedriver().setup(); ChromeDriver driver = new ChromeDriver();
这样它会自动下载匹配你当前Chrome版本的ChromeDriver,省得手动查版本。
3. 清理环境缓存
- 执行Maven命令清理项目依赖:
mvn clean install -U,强制更新快照依赖,避免旧的ChromeDriver jar包残留。 - 手动删除Chrome浏览器的缓存(设置→隐私和安全→清除浏览数据),有时候旧的会话缓存会干扰Driver的导航操作。
- 检查本地是否有旧的ChromeDriver可执行文件残留,比如系统PATH里的旧版本,替换成新下载的对应版本。
4. 临时替代方案
如果暂时没法更新Driver版本,可以试试用driver.get("url")代替driver.navigate().to("url"),这两个方法功能几乎一致,但在某些兼容性场景下,get()方法的稳定性更好。
5. 检查Chrome自动更新
确认你的Chrome没有被后台自动更新到更高版本(比如65+),如果更新了,就得对应升级ChromeDriver到2.37及以上版本。可以在Chrome的chrome://version/页面查看当前准确版本。
内容的提问来源于stack exchange,提问作者Mithu Khan

