Chrome 110匹配版本ChromeDriver无法启动会话:DevTools连接失败求助
Chrome 110 + ChromeDriver 110 无法启动会话(DevTools连接失败)解决方法
环境信息
- Chrome版本:Version 110.0.5481.177 (Official Build) (x86_64)
- ChromeDriver版本:110.0.5481.77
- Java版本:17
- Selenium版本:4.8.1
- macOS版本:13.2.1
问题描述
升级至Chrome 110并匹配对应版本驱动后,启动会话时出现如下错误:
Starting ChromeDriver 110.0.5481.77 (65ed616c6e8ee3fe0ad64fe83796c020644d42af-refs/branch-heads/5481@{#839}) on port 6304 Only local connections are allowed. Please see https://chromedriver.chromium.org/security-considerations for suggestions on keeping ChromeDriver safe. ChromeDriver was started successfully. [1677671505.261][WARNING]: Browser-wide DevTools client failed to connect: disconnected: unable to connect to renderer org.openqa.selenium.SessionNotCreatedException: Could not start a new session. Response code 500. Message: disconnected: not connected to DevTools (failed to check if window was closed: disconnected: not connected to DevTools) (Session info: chrome=110.0.5481.177) Host info: host: 'Adam.local', ip: 'fe80:0:0:0:6c:2c11:1a77:e83c%en0' Build info: version: '4.6.0', revision: '79f1c02ae20' System info: os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '13.2.1', java.version: '17.0.6' Driver info: org.openqa.selenium.chrome.ChromeDriver
当前驱动设置代码:
System.out.println("LOOKING FOR DRIVER"); System.setProperty("webdriver.chrome.driver", "./chromedriver"); System.out.println("DRIVER FOUND"); ChromeOptions options = new ChromeOptions(); options.addArguments("--headless"); options.addArguments("user-agent=GetMyBoat/Test"); setupDriver = new ChromeDriver(options);
已尝试移除--headless参数、重装Chrome及相关数据,问题仍未解决。
解决方案
1. 更新Headless模式参数
Chrome 110+对Headless模式进行了升级,旧的--headless参数会导致DevTools连接异常,替换为新参数即可:
ChromeOptions options = new ChromeOptions(); // 替换旧的headless参数为新版格式 options.addArguments("--headless=new"); options.addArguments("user-agent=GetMyBoat/Test"); setupDriver = new ChromeDriver(options);
2. 添加DevTools连接权限参数
ChromeDriver 110新增跨源连接限制,添加以下参数解除限制并优化运行环境:
ChromeOptions options = new ChromeOptions(); options.addArguments("--headless=new"); options.addArguments("user-agent=GetMyBoat/Test"); // 允许所有源连接DevTools options.addArguments("--remote-allow-origins=*"); // 解决macOS共享内存不足问题 options.addArguments("--disable-dev-shm-usage"); // 禁用沙箱模式(适配macOS环境) options.addArguments("--no-sandbox"); setupDriver = new ChromeDriver(options);
3. 使用DriverManager自动管理驱动
手动设置驱动路径易出现兼容性问题,改用WebDriverManager自动匹配并下载驱动,无需手动配置System.setProperty:
首先添加Maven依赖(若使用Maven):
<dependency> <groupId>io.github.bonigarcia</groupId> <artifactId>webdrivermanager</artifactId> <version>5.3.2</version> </dependency>
修改代码:
import io.github.bonigarcia.wdm.WebDriverManager; // ... WebDriverManager.chromedriver().setup(); ChromeOptions options = new ChromeOptions(); options.addArguments("--headless=new"); options.addArguments("user-agent=GetMyBoat/Test"); options.addArguments("--remote-allow-origins=*"); setupDriver = new ChromeDriver(options);
4. 检查macOS系统权限
打开「系统设置」→「隐私与安全性」→「自动化」,确保你的IDE(如IntelliJ)或Java进程被允许控制Chrome;若仍有问题,检查「屏幕录制」权限,将Chrome和IDE加入允许列表。
5. 添加额外启动参数优化兼容性
添加以下参数减少Chrome启动时的兼容性问题:
options.addArguments("--window-size=1920,1080"); options.addArguments("--disable-gpu"); options.addArguments("--disable-extensions"); options.addArguments("--start-maximized");
内容的提问来源于stack exchange,提问作者Adam YourBuddy Bethlehem
相关产品推荐
相关产品推荐

