【发布时间】: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