【问题标题】:Recurring ERR_CONNECTION_RESET in C# implementation of Selenium ChromeDriver在 Selenium ChromeDriver 的 C# 实现中重复出现 ERR_CONNECTION_RESET
【发布时间】:2021-10-19 14:32:26
【问题描述】:

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

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

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

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

我正在使用 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

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

【问题讨论】:

  • 如果您使用代理服务器,或者有时如果您无头运行驱动程序,则可以看到这一点。您可以发布您的驱动程序参数吗?
  • @K.B.感谢您的回复 - 我将它们添加为对原始帖子的编辑,因为它们可能是相关的并且不适合这个空间。而且,还有一个代理。
  • 对我来说最可疑的是 Fiddler 代理。如果 Fiddler 停止,错误是否可重现?
  • 这是一个旧代码库,所以我需要一些时间来重构和替换需要代理完成的事情。完成并测试后,我可以立即报告更多。不过,我通常会同意您的看法,但奇怪的是,随着我们迁移到较新的 Chrome 版本(v86 没有问题),这开始起作用了。

标签: c# selenium selenium-webdriver chrome-web-driver


【解决方案1】:
  1. 您提到您使用Fiddler,如果问题只有在启动时才能重现,您可以尝试重新生成HTTPS certificates
  2. 问题可能是由于应用程序本身造成的。如果在您不使用 Selenium/ChromeDriver 时显示错误,您可以要求您的开发人员/devops 检查 IIS 设置或遵循以下建议之一。
  3. 从计算机设置->网络和Internet->代理检查您的Internet选项。在我的电脑上启用了“自动检测设置”。
  4. 您也可以尝试删除 Chrome 浏览器缓存。
  5. 刷新 DNS (ipconfig /flushdns)
  6. 可能是为您的 Windows Server 所在的网络配置的 some rule(防火墙、内部 DNS 记录)。
  7. 检查问题是否可在隐身模式下重现(未启用任何浏览器扩展)。 starting the driver 时可以传递 --incognito 参数。
  8. 问题可能是由证书或 SSL/TLS 问题引起的。

【讨论】:

  • 谢谢!好消息:看起来避免使用代理已经消除了大多数此错误的发生。但是,我仍然偶尔收到连接被拒绝错误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. 这可能与上述无关。我现在看到的例外情况明显减少,所以我对自己所处的位置更满意。
  • “无法建立连接,因为目标机器主动拒绝它”-> 当网络规则阻止从一个 IP/网段到另一个 IP 的流量时,我已经看到了这一点。但它总是可以重现,而不是偶尔。
猜你喜欢
  • 2020-09-16
  • 1970-01-01
  • 1970-01-01
  • 2020-03-28
  • 2017-01-21
  • 1970-01-01
  • 1970-01-01
  • 2023-01-12
  • 1970-01-01
相关资源
最近更新 更多