提问人:Cory Gehr 提问时间:8/18/2021 最后编辑:Cory Gehr 更新时间:8/19/2021 访问量:1708
Selenium ChromeDriver 的 C# 实现中的重复ERR_CONNECTION_RESET
Recurring ERR_CONNECTION_RESET in C# implementation of Selenium ChromeDriver
问:
在过去的几周里,我一直在与以下错误作斗争,试图使用 Selenium (Chrome 92) 运行 UI 测试:
WebDriverException unknown error: net::ERR_CONNECTION_RESET. (Session info: chrome=92.0.4515.107)
这种情况最常发生在尝试使用 XPath 查找 HTML 元素时。
最初,我添加了一个重试循环,用于检查是否抛出 三次,如果是,请回收并重试(通过 和 .这并不能解决问题,我的应用程序在超过重试限制后重新启动也不能解决问题。因此,我开始认为这是系统级(Windows Server 2016)的问题。即使重新启动也并不总是能解决问题 - 当它开始失败时,它完全冻结,我最终不得不完全重建环境。WebDriverException
IWebDriver
IWebDriver.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
(我们正在执行一些与安全相关的检测,因此禁用了证书错误。
答:
- 你提到你使用 Fiddler,如果问题仅在启动时可重现,则可以尝试重新生成 HTTPS 证书
- 该问题可能是由于应用程序本身造成的。如果您在不使用 Selenium/ChromeDriver 时显示错误,您可以要求您的开发人员/devops 检查 IIS 设置或遵循以下建议之一。
- 从计算机设置->网络&Internet->代理中检查您的Internet选项。在我的计算机上,启用了“自动检测设置”。
- 您也可以尝试删除 Chrome 浏览器缓存。
- 刷新 DNS (ipconfig /flushdns)
- 它可能是为 Windows Server 所在的网络配置的某些规则(防火墙、内部 DNS 记录)。
- 检查问题是否可在隐身模式下重现(未启用任何浏览器扩展程序)。您可以在启动驱动程序时传递参数。
--incognito
- 问题可能是由证书或 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.
评论