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

Selenium/Java报java.net.SocketException: Connection reset求解

Selenium触发java.net.SocketException: Connection reset报错排查方案

从给出的运行日志判断,报错发生在Selenium通过WebSocket连接Chrome DevTools Protocol(CDP)创建会话的阶段,可按以下优先级逐一排查修复:

  • 优先修复CDP版本不匹配问题
    日志明确提示Unable to find an exact match for CDP version 103, so returning the closest version found: 102,这是触发连接重置的最常见原因。仅匹配ChromeDriver和本地Chrome浏览器版本不足以保证兼容性,还需要匹配Selenium核心依赖的版本:Chrome 103对应的Selenium Java版本要求为4.3.0及以上,若使用的Selenium版本低于4.3.0,内置的CDP协议实现最高仅支持到Chrome 102,版本回退时会直接导致WebSocket连接被重置。
    如果使用Maven管理依赖,将pom文件中selenium-java的版本调整为4.3.0及以上,重新拉取依赖后再运行测试即可。
  • 补充Chrome启动参数绕过同源限制
    高版本Chrome默认会拦截非白名单来源的CDP连接,初始化ChromeDriver时没有配置对应参数会直接导致连接被重置,在初始化ChromeOptions时添加如下参数即可:
    ChromeOptions options = new ChromeOptions();
    options.addArguments("--remote-allow-origins=*");
    WebDriver driver = new ChromeDriver(options);
    
  • 排查本地拦截类软件影响
    Connection reset的本质是TCP连接被对端强制断开,检查本机是否开启了全局代理、第三方防火墙、终端安全管控软件,这类软件经常会拦截本地进程间的端口通信(ChromeDriver和Chrome之间通过本地随机端口建立WebSocket连接),临时关闭上述软件后再复现测试,确认是否为拦截导致。
  • 排查端口占用问题
    从日志看本次ChromeDriver启动在63488端口,若该端口被其他进程占用,或者被系统端口规则限制,也会导致连接失败。可以在初始化ChromeDriver时手动指定空闲的未被占用端口,避开随机端口分配的异常问题。
  • 无关日志说明
    日志开头的SLF4J相关提示是日志门面缺少实现类导致的警告,和本次连接重置报错没有关联,不影响Selenium核心流程运行,如果需要消除该警告,引入对应slf4j实现依赖即可,无需针对该提示做额外排查。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 06:09:19