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

C#实现Selenium ChromeDriver时反复出现ERR_CONNECTION_RESET故障如何解决

Selenium Chrome v92运行UI测试触发net::ERR_CONNECTION_RESET报错问题整理

最近几周运行Selenium(Chrome 92版本)UI测试持续遭遇如下报错:
WebDriverException unknown error: net::ERR_CONNECTION_RESET. (Session info: chrome=92.0.4515.107)

该报错多在使用XPath定位HTML元素时触发,新增重试逻辑累计抛出3次异常后回收IWebDriver实例重试无效,重启应用甚至重启服务器也无法解决,极端情况需完全重建环境。

已验证信息:

  • Selenium WebDriver NuGet包版本为v92.0.4515.4300,将WebDriver与Chrome版本对齐后问题仍存在
  • 测试环境为Windows Server 2016
  • 本地同步运行Fiddler作为代理,随测试应用同步启停
  • 因安全检测需求,需关闭证书错误校验

Chrome实例注入配置

  • --user-data-dir=C:\temp\{uniquedir}
  • options.AddUserProfilePreference("credentials_enable_service", false);
  • options.AddUserProfilePreference("profile.password_manager_enabled", false);

Chrome命令行启动参数

  • --lang=en-GB
  • --ignore-certificate-errors
  • --no-experiments
  • --disable-translate
  • --disable-plugins
  • --enable-logging
  • --no-sandbox
  • --dns-prefetch-disable
  • --disable-gpu
  • --disable-field-trial-config

可能的原因及排查方案

1. Fiddler代理链路异常(最高优先级排查)

Fiddler和测试应用同步启停的逻辑很容易出现进程顺序异常,导致Chrome请求链路断链:

  • Fiddler退出时未及时清空系统代理配置,Chrome仍向已关闭的Fiddler端口发送请求,直接触发连接重置
  • 高并发测试场景下Fiddler端口被占满、请求积压超时,会主动断开Chrome的连接

排查方式:测试启动前先校验系统代理是否为空,Fiddler退出时强制清空代理配置;临时移除Fiddler代理运行测试,确认报错是否消失。

2. 用户数据目录权限/残留冲突

指定的--user-data-dir为临时目录,若WebDriver异常退出时未销毁目录,下一次启动时Chrome会读取残留的进程锁、缓存文件,导致网络请求初始化失败。

排查方式:创建Chrome实例前强制删除对应临时目录的所有残留文件,改用系统默认临时目录路径生成唯一文件夹,避免权限问题。

3. Windows Server 2016 TCP端口耗尽

Windows Server 2016默认动态端口范围较小,高频启停WebDriver、发起HTTP请求会快速耗尽临时端口,新的请求无法建立连接触发重置。

排查方式:执行命令netsh int ipv4 show dynamicport tcp查看当前端口范围,若起始端口为49152、端口数低于16384,执行netsh int ipv4 set dynamicport tcp start=1024 num=64511扩大端口范围,同时开启TCP_TIMED_WAIT复用。

4. XPath定位触发隐式页面跳转冲突

若使用的XPath定位语句匹配到可点击元素(如a标签、绑定了点击事件的div),对应版本ChromeDriver在执行元素定位时可能触发意外的焦点跳转/页面请求,若此时页面正在加载就会被中断触发连接重置。

排查方式:定位元素前强制等待页面DOM加载完成(等待document.readyState == 'complete'),禁用隐式等待改用显式等待定位元素,避免定位时触发未完成的页面请求中断。

5. 证书校验逻辑冲突

虽然添加了--ignore-certificate-errors参数,但Chrome 92版本默认启用的证书透明校验、企业级根证书策略仍可能和Fiddler的自签证书冲突,导致TLS握手失败触发连接重置。

排查方式:额外添加启动参数--ignore-certificate-errors-spki-list指定Fiddler根证书的SPKI哈希,完全绕过Chrome内置的证书校验逻辑。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 07:18:02