【问题标题】:WebDriverException thrown partway through Selenium test only when running remotely仅在远程运行时在 Selenium 测试中途抛出 WebDriverException
【发布时间】:2017-02-21 21:24:45
【问题描述】:

我的一组测试似乎只有在远程运行并且只有在尝试与特定元素交互时才会出现问题。我正在通过 VSTS 构建和运行它。

错误:

OpenQA.Selenium.WebDriverException:向远程 WebDriver 服务器发送 HTTP 请求以获取 URL(URL 已编辑,是 localhost URL),引发了具有空响应的异常。异常状态为 ReceiveFailure,消息为:底层连接已关闭:接收时发生意外错误。 ---> System.Net.WebException:底层连接已关闭:接收时发生意外错误。 ---> System.IO.IOException: Unable to read data from the transport connection: 一个现有的连接被远程主机强行关闭。 ---> System.Net.Sockets.SocketException: 现有连接被远程主机强行关闭

我尝试在其中输入数字的元素的 HTML(我们正在使用敲除):

<input type="number" min="0" max="999" data-bind="value: redacted).extend({ min: 0, required: { message: 'redacted' } }), disable: redacted" name="redacted" id="redacted" title="redacted" required="required" class="">

不要介意redacted。我想将所有属性留在那里以显示为元素设置了哪些属性,但实际值已被编辑。

这是我用来在元素中输入值的代码:

IWebElement element = driver.FindElement(By.Id(elementID));
element.Clear(); 
element.SendKeys(value);

这是通过 ChromeDriver 运行的。还有其他几个数字字段,我可以成功地将数据填充到其中而不会出现问题。

您知道这里可能出了什么问题以及如何解决吗?

【问题讨论】:

  • 远程运行是什么意思?在一台机器上调用/运行测试,但在远程机器上执行测试或在同一台远程机器上调用/运行和执行测试?如果在本地机器上运行测试,结果是什么?特定元素的细节是什么?
  • @starain-MSFT 它在 VSTS 中调用并在远程构建服务器上运行。我在本地运行时从未遇到过这个问题。我不确定您所说的“特定元素的详细信息是什么?”,我在这里展示了相关元素的 HTML。
  • 关于特定元素,您的意思是它可以与其他元素一起正常工作吗?构建代理是否以交互模式运行?另一方面,在本地运行时运行良好,如果在构建服务器上手动运行,结果如何?
  • @starain-MSFT 它可以与其他元素一起正常工作,如果我在构建服务器上手动运行它也可以正常工作。老实说,我不确定如何将构建代理设置为以交互模式运行。
  • 关于交互模式,在配置构建代理时输入no并回车,进入询问是否将代理配置为服务的步骤。 (您可以使用交互模式在同一台机器上设置新的构建代理)

标签: c# selenium azure-devops selenium-chromedriver


【解决方案1】:

这看起来是 VSTS 构建服务器上的某种 SSL 或内部网络问题,可能很难获得更多信息,因为您不应该拥有对该机器的完全访问权限。

我们还对我们的持续集成进行了 Selenium 测试,但我们使用绑定到 VSTS 的本地构建服务器,对构建和流程进行更多控制。

【讨论】:

  • 我可以完全访问机器。你会推荐什么获得更多信息?
  • 尝试在两者之间添加一个代理,我会使用 Fiddler 查看发送到您的远程 Selenium WebDriver 的请求,看看它们周围有什么问题
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-12-22
  • 2015-09-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-25
相关资源
最近更新 更多