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

Selenium Java无法连接已有的Chrome会话问题求助

解决Selenium连接远程调试Chrome时的WebSocket连接失败问题

以下是针对你遇到的ConnectionFailedException(无法建立WebSocket连接)的具体解决步骤:

  • 严格匹配Chrome与ChromeDriver版本
    WebDriverManager默认下载最新版ChromeDriver,但如果本地手动启动的Chrome是旧版本,版本不兼容会直接导致连接失败。你可以手动指定对应版本的ChromeDriver,比如你的Chrome版本是114.0.5735.90,修改代码如下:

    driver = WebDriverManager.chromedriver().browserVersion("114.0.5735.90").capabilities(options).create();
    

    或者直接把Chrome升级到最新版本,再运行代码让WebDriverManager自动匹配下载对应驱动。

  • 检查9222端口是否被占用
    打开命令提示符,执行以下命令查看端口占用情况:

    netstat -ano | findstr :9222
    

    如果有其他进程占用该端口,要么打开任务管理器杀掉对应PID的进程,要么换一个未被占用的端口(比如9223),同时更新Chrome启动命令和代码里的debuggerAddress。

  • 确认用户数据目录的有效性
    确保D:\SQA\Browser_data\ChromeData目录有读写权限,且启动Chrome前没有其他Chrome进程在使用这个目录(否则会导致远程调试服务无法正常监听)。如果目录有问题,换一个新的空目录试试,比如:

    chrome --remote-debugging-port=9222 --user-data-dir="D:\SQA\Browser_data\NewChromeData"
    
  • 不要用driver.quit()关闭手动启动的Chrome
    你代码里的driver.quit()会直接关闭你手动启动的Chrome窗口,甚至可能导致连接异常。如果只是想关闭当前标签页,改用driver.close();如果不需要关闭浏览器,直接注释掉driver.quit()语句。

  • 验证Chrome远程调试服务是否正常运行
    启动Chrome后,在浏览器里打开http://127.0.0.1:9222,如果能看到包含已打开标签页的调试页面,说明服务正常;如果打不开,检查Chrome启动命令是否正确——要确保是从Chrome安装目录(比如C:\Program Files\Google\Chrome\Application)启动的chrome.exe,先cd到该目录再执行启动命令。

  • 绕开WebDriverManager直接指定驱动路径
    有时候WebDriverManager的自动匹配会出问题,你可以手动下载与Chrome版本一致的ChromeDriver,然后直接指定路径:

    System.setProperty("webdriver.chrome.driver", "C:\\path\\to\\chromedriver.exe");
    ChromeOptions options = new ChromeOptions();
    options.setExperimentalOption("debuggerAddress", "127.0.0.1:9222");
    driver = new ChromeDriver(options);
    

内容的提问来源于stack exchange,提问作者Aliul Islam Abir

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 17:12:49