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

Selenium运行报WebSocket$Listener onError连接重置错误如何解决

Selenium启动Chrome触发WebSocket连接重置异常排查方案

日志非阻断类提示说明

首先过滤掉不影响核心流程的提示信息,不需要优先处理:

  • SLF4J日志提示:仅为项目缺少SLF4J实现包导致,不影响Selenium核心运行逻辑
  • CDP版本匹配警告:Selenium未找到和当前ChromeDriver完全匹配的CDP版本,自动适配了邻近低版本,属于兼容范围提示,不会直接触发连接重置
  • ChromeDriver启动成功、W3C协议检测成功日志,说明驱动本身的启动流程无异常

核心Connection reset异常排查步骤

异常触发点为ChromeDriver和浏览器建立DevTools WebSocket连接阶段,按以下优先级逐一排查:

  • 版本一致性校验
    确认本地安装的Chrome浏览器大版本和ChromeDriver版本完全对应,你当前使用的ChromeDriver为102版本,若本地Chrome版本高于或低于该大版本,直接替换对应版本的ChromeDriver,或者重装Chrome到和驱动完全匹配的版本。不要依赖CDP邻近版本兼容逻辑,版本差会直接导致WebSocket握手失败断连
  • 修正代码逻辑冲突
    你当前的代码在实例化ChromeDriver后立刻调用driver.close(),此时后台还在完成DevTools连接握手流程,主动关闭会直接打断WebSocket连接触发重置。
    调整代码逻辑:实例化驱动后预留初始化等待时间,执行完测试操作后优先用quit()方法完整清理驱动和浏览器进程,不要刚实例化就立刻关闭资源。修正后的基础示例代码:

import org.openqa.selenium.chrome.*;

public class Testt {

static {
    System.setProperty("webdriver.chrome.driver","./driver/chromedriver.exe");
}

public static void main(String[] args) throws InterruptedException {
    ChromeDriver driver= new ChromeDriver();
    // 等待驱动和浏览器连接初始化完成
    Thread.sleep(2000);
    // 此处编写页面操作逻辑
    // 用quit替代close,完整回收进程资源
    driver.quit();
}

}

- 本地网络拦截排查
检查本地是否开启系统代理、第三方防火墙、安全管控软件,这类工具会拦截localhost回环地址的WebSocket连接,测试阶段可暂时关闭相关工具,或者将localhost、127.0.0.1加入代理绕过列表。
Windows环境下还要排查是否有其他进程占用Chrome调试端口,可通过ChromeOptions手动指定空闲调试端口启动,避免端口冲突:
```java
ChromeOptions options = new ChromeOptions();
options.setExperimentalOption("debuggerAddress", "127.0.0.1:9222");
ChromeDriver driver = new ChromeDriver(options);
  • 依赖版本适配
    如果你使用的Selenium版本高于4.2.0,尝试降级到4.1.x稳定版本,高版本Selenium内置的Netty客户端在JDK 13及以上版本(从你的报错栈看当前使用JDK 13)存在WebSocket连接偶发断连的已知问题。

内容的提问来源于stack exchange,提问作者Maya

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.01 23:15:40