You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.18 08:24:03