Selenium ChromeDriver 的 C# 实现中的重复ERR_CONNECTION_RESET

Recurring ERR_CONNECTION_RESET in C# implementation of Selenium ChromeDriver

提问人:Cory Gehr 提问时间:8/18/2021 最后编辑:Cory Gehr 更新时间:8/19/2021 访问量:1708

问:

在过去的几周里,我一直在与以下错误作斗争,试图使用 Selenium (Chrome 92) 运行 UI 测试:

WebDriverException unknown error: net::ERR_CONNECTION_RESET. (Session info: chrome=92.0.4515.107)

这种情况最常发生在尝试使用 XPath 查找 HTML 元素时。

最初,我添加了一个重试循环,用于检查是否抛出 三次,如果是,请回收并重试(通过 和 .这并不能解决问题,我的应用程序在超过重试限制后重新启动也不能解决问题。因此,我开始认为这是系统级(Windows Server 2016)的问题。即使重新启动也并不总是能解决问题 - 当它开始失败时,它完全冻结,我最终不得不完全重建环境。WebDriverExceptionIWebDriverIWebDriver.Quit()IWebDriver.Dispose()

我正在使用 Selenium WebDriver NuGet ;我意识到这与上面列出的版本并不完全一致,但拥有完全相同的版本并不能解决问题。v92.0.4515.4300

我知道“未知错误”是模糊的。有没有人对可能导致问题的原因有任何建议?

提前致谢。

编辑:在此处发布浏览器参数,而不是将它们塞进评论中。我忘了提到,有一个 Fiddler 实例,我们将其作为代理在本地系统上运行,并与一些测试结合使用。它以测试应用程序开始和结束。

创建 Chrome 实例时,以下内容将作为选项注入:

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

这些通过 Selenium 添加为命令行参数:

  • --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

(我们正在执行一些与安全相关的检测,因此禁用了证书错误。

C# 硒 硒 webdriver chrome-web驱动程序

评论

0赞 K. B. 8/18/2021
如果您使用的是代理服务器,或者有时如果您运行驱动程序无头,则可以看到这一点。你能发布你的司机论点吗?
0赞 Cory Gehr 8/18/2021
@K.B. 感谢您的回复 - 我将它们作为编辑添加到原始帖子中,因为它们可能是相关的并且不适合这个空间。而且,有一个代理。
0赞 K. B. 8/18/2021
对我来说,最可疑的是 Fiddler 代理。如果 Fiddler 停止,错误是否可重现?
0赞 Cory Gehr 8/18/2021
这是一个旧的代码库,所以我需要一些时间来重构和替换需要代理才能完成的事情。一旦我完成并测试,我就可以报告更多。不过,我大体上同意你的看法,但奇怪的是,当我们转向更新的 Chrome 版本时,这种情况开始发挥作用(v86 没有问题)。

答:

2赞 K. B. 8/19/2021 #1
  1. 你提到你使用 Fiddler,如果问题仅在启动时可重现,则可以尝试重新生成 HTTPS 证书
  2. 该问题可能是由于应用程序本身造成的。如果您在不使用 Selenium/ChromeDriver 时显示错误,您可以要求您的开发人员/devops 检查 IIS 设置或遵循以下建议之一。
  3. 从计算机设置->网络&Internet->代理中检查您的Internet选项。在我的计算机上,启用了“自动检测设置”。
  4. 您也可以尝试删除 Chrome 浏览器缓存。
  5. 刷新 DNS (ipconfig /flushdns)
  6. 它可能是为 Windows Server 所在的网络配置的某些规则(防火墙、内部 DNS 记录)。
  7. 检查问题是否可在隐身模式下重现(未启用任何浏览器扩展程序)。您可以在启动驱动程序时传递参数。--incognito
  8. 问题可能是由证书或 SSL/TLS 问题引起的。

评论

1赞 Cory Gehr 8/19/2021
谢谢!好消息是:看起来避免使用代理已经消除了大多数此类错误。但是,我仍然偶尔收到连接被拒绝错误,这可能与上述无关。我现在看到的例外情况明显减少了,所以我对我所处的位置更满意。WebDriverException Unexpected error. System.Net.WebException: Unable to connect to the remote server ---> System.Net.Sockets.SocketException: No connection could be made because the target machine actively refused it.
1赞 K. B. 8/19/2021
“无法建立连接,因为目标计算机主动拒绝了它” - >当网络规则阻止从一个 IP/网段到另一个 IP 的流量时,我已经看到了这一点。但它总是可重复的,而不是偶尔的。