ChromeDriver.exe停止运行求助:自动化测试执行中途中断
嘿,来解决你遇到的ChromeDriver崩溃问题吧——既然每次调用driver.get(URL...)都会触发,结合你的环境信息:
- Selenium: 3.11.0
- Chrome: 65.0.3325.181
- Chromedriver: 2.37
- JDK: 1.8
- OS: Windows 7 Enterprise(64位)
给你几个针对性的修复方案,按顺序试试:
1. 再次确认版本匹配与文件完整性
你选的ChromeDriver 2.37确实对应Chrome 65(官方匹配表是Chrome v64-66对应Driver 2.37),这点没问题,但要注意:
- 确保下载的是Windows平台的ChromeDriver(文件名是
chromedriver_win32.zip,没错,Win64也用这个包),解压后不要修改文件名,放到系统PATH目录,或者在代码里指定绝对路径(避免路径含中文、空格或特殊字符)。 - 重新下载一次ChromeDriver,排除文件损坏的可能——有时候下载过程中文件会丢包,导致运行崩溃。
2. 禁用Chrome的GPU加速与沙箱模式
Win7上旧版Chrome的GPU加速经常和ChromeDriver冲突,尤其是渲染页面时触发崩溃。初始化ChromeOptions时添加这两个参数:
ChromeOptions options = new ChromeOptions(); // 禁用GPU加速,规避图形渲染相关崩溃 options.addArguments("--disable-gpu"); // 关闭沙箱模式,Win7下权限限制可能导致沙箱启动失败 options.addArguments("--no-sandbox"); WebDriver driver = new ChromeDriver(options);
这两个参数是Win7环境下解决ChromeDriver崩溃的常用手段,优先试试。
3. 检查Chrome安装路径与权限
- 如果你的Chrome不是默认路径安装的,一定要在ChromeOptions里指定Chrome的绝对路径,避免Driver找不到正确的Chrome实例:
options.setBinary("C:\\Program Files (x86)\\Google\\Chrome\\Application\\chrome.exe");
- 确保运行测试的用户有Chrome安装目录和ChromeDriver所在目录的读写权限,Win7的UAC权限限制可能导致Driver无法访问必要文件。可以右键以管理员身份运行你的测试脚本,临时验证是否是权限问题。
4. 指定干净的用户数据目录
ChromeDriver每次运行会生成临时用户数据,如果这个目录损坏,会导致启动或页面加载崩溃。手动指定一个空的临时目录:
// 随便找个你有权限的空目录,比如C盘下的Temp文件夹 options.addArguments("--user-data-dir=C:\\Temp\\ChromeTestProfile");
每次测试后可以删除这个目录,下次运行会重新生成干净的环境。
5. 排查依赖与JDK兼容性
你的JDK 1.8和Selenium 3.11.0是兼容的,但要确保项目里没有混合其他版本的Selenium依赖——比如旧版的selenium-server-standalone或者不同版本的selenium-chrome-driver,清理Maven/Gradle依赖,只保留selenium-java:3.11.0即可。
6. 排除页面内容因素
先测试一个简单的URL,比如driver.get("https://www.google.com"),如果还是崩溃,说明问题不在目标页面;如果不崩溃,再排查目标页面是否有特殊的JS脚本、插件或者渲染元素,导致ChromeDriver无法处理。
如果以上方法都没用,建议去Windows事件查看器(事件查看器→Windows日志→应用程序)里找崩溃的详细日志,里面会有错误代码和崩溃的模块名称,能帮你定位更底层的问题(比如系统DLL文件损坏)。
内容的提问来源于stack exchange,提问作者Manigandan

