Selenium Java搭配ChromeDriver触发Inspector.detached报错如何解决?
错误根因
你遇到的disconnected: received Inspector.detached event错误本质是chromedriver和Chrome浏览器的调试连接被意外中断,排除手动打开开发者工具的情况后,常见触发原因如下:
- Mac Catalina系统的权限校验机制拦截了chromedriver的部分调试请求,导致连接不稳定
- 上一次脚本运行异常退出后,残留的Chrome/chromedriver进程占用了调试端口,新启动的进程连接冲突
- Chrome启动参数配置不合理,后台插件、网络请求意外打断调试链路
- 调试端口被其他进程抢占
排查解决步骤
- 清理残留进程
每次执行脚本前先执行命令杀死所有相关残留进程,避免端口占用冲突:
ps aux | grep -E '(Google Chrome|chromedriver)' | grep -v grep | awk '{print $2}' | xargs kill -9
- 解除系统对chromedriver的安全限制
Catalina默认会对第三方未公证的程序添加隔离标记,导致驱动运行不稳定,执行以下命令解除标记,路径替换为你本地的chromedriver存放路径:
sudo xattr -d com.apple.quarantine /usr/local/bin/chromedriver
- 调整Chrome启动参数
初始化ChromeOptions时添加以下配置,规避不必要的调试链路中断风险:
ChromeOptions options = new ChromeOptions(); // 指定固定调试端口,避免随机端口冲突 options.addArguments("--remote-debugging-port=9222"); // 禁用沙箱模式,适配Mac系统权限限制 options.addArguments("--no-sandbox"); // 禁用共享内存使用,避免内存不足导致连接断开 options.addArguments("--disable-dev-shm-usage"); // 禁用所有扩展插件,避免插件干扰调试 options.addArguments("--disable-extensions"); // 禁用后台网络服务,避免后台请求打断调试 options.addArguments("--disable-background-networking"); // 初始化driver时传入配置 WebDriver driver = new ChromeDriver(options);
注意不要添加--auto-open-devtools-for-tabs参数,该参数会自动打开开发者工具触发该错误
- 检查调试端口占用
如果指定了9222端口,执行脚本前先运行命令确认端口未被占用:
lsof -i:9222
如果有输出对应进程,杀死对应进程或者更换其他未被占用的调试端口即可。
- 拉长服务超时配置
初始化ChromeDriverService时拉长超时时间,避免初始化阶段连接超时被强制中断:
ChromeDriverService service = new ChromeDriverService.Builder() .usingDriverExecutable(new File("/path/to/chromedriver")) .withTimeout(Duration.ofSeconds(30)) .build(); WebDriver driver = new ChromeDriver(service, options);
内容的提问来源于stack exchange,提问作者PainIsAMaster
相关产品推荐
相关产品推荐

