Selenium Chrome启动失败:DevToolsActivePort文件不存在求助
Chrome启动失败:DevToolsActivePort文件不存在问题排查与解决
在Windows 10系统中使用Java语言的Selenium框架运行Chrome浏览器时,抛出异常:
org.openqa.selenium.WebDriverException: unknown error: Chrome failed to start: crashed. (unknown error: DevToolsActivePort file doesn't exist)
已尝试的解决措施
- 取消以管理员身份运行程序
环境配置
- Java JDK版本:1.8
- Chrome浏览器版本:108.0.5359.125
- selenium-java版本:3.141.59
- 使用WebDriverManager管理驱动
核心代码
public void setUp() throws InterruptedException, IOException, AWTException { String browser = properties.getProperty("Browser"); if (browser.equalsIgnoreCase("chrome")) { System.out.println("inside chrome browser configuration"); Runtime.getRuntime().exec("cmd /c start Taskkill /IM chrome.exe /T /F"); Runtime.getRuntime().exec("cmd /c start Taskkill /IM chromedriver.exe /T /F"); Thread.sleep(5000); ChromeOptions options = new ChromeOptions(); options.setBinary("C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe"); options.setExperimentalOption("useAutomationExtension", false); options.addArguments("start-maximized"); // open Browser in maximized mode System.setProperty("wdm.proxy", wdmProxy); System.setProperty("wdm.proxyUser", wdmProxyUser); System.setProperty("wdm.proxyPass", wdmProxyPwd); WebDriverManager.chromedriver().setup(); driver = new ChromeDriver(options); driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); String test = properties.getProperty("URL"); driver.get(test);
排查与解决方法
1. 调整ChromeOptions关键参数
添加以下参数解决端口占用、权限及共享内存问题:
ChromeOptions options = new ChromeOptions(); options.setBinary("C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe"); options.setExperimentalOption("useAutomationExtension", false); options.addArguments("start-maximized"); // 新增参数 options.addArguments("--disable-dev-shm-usage"); // 避免共享内存不足导致崩溃 options.addArguments("--no-sandbox"); // 关闭沙箱模式,规避权限限制 options.addArguments("--remote-debugging-port=9222"); // 手动指定调试端口,确保DevTools端口可用
2. 优化进程清理逻辑
移除cmd /c start,直接执行taskkill确保进程彻底终止,缩短不必要的等待时间:
// 清理Chrome相关进程 try { Runtime.getRuntime().exec("taskkill /F /IM chrome.exe /T"); Runtime.getRuntime().exec("taskkill /F /IM chromedriver.exe /T"); Thread.sleep(3000); } catch (IOException e) { // 忽略进程不存在的异常 e.printStackTrace(); }
3. 强制匹配ChromeDriver版本
手动指定与Chrome 108完全匹配的驱动版本,避免WebDriverManager自动匹配偏差:
WebDriverManager.chromedriver().driverVersion("108.0.5359.71").setup();
4. 检查权限与安装路径
- 确认
C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe路径存在,且当前用户拥有该目录的读写权限 - 若路径权限不足,给当前用户添加该目录的「完全控制」权限
5. 禁用Chrome自动更新
Chrome自动更新会导致版本不匹配,可通过以下方式禁用:
- 组策略:打开
gpedit.msc,定位到计算机配置>管理模板>Google>Google Chrome>更新,启用「禁用自动更新」 - 注册表:在
HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Google\Chrome下新建DWORD值AutoUpdateCheckPeriodMinutes,设置为0
内容的提问来源于stack exchange,提问作者Mahi
相关产品推荐
相关产品推荐

