gpt4 book ai didi

c# - Selenium WebDriver 偶尔抛出超时异常

转载 作者:IT王子 更新时间:2023-10-29 04:00:14 25 4
gpt4 key购买 nike

使用 selenium 对我们的项目进行 ui 测试。我们正在运行最新版本 2.30.0。我们使用 Firefox WebDriver 并运行 Firefox 19.0。

一般来说,当我在 Visual Studio 中运行 ui 测试时,ui 测试可以在本地甚至服务器端运行。我们的 ui 测试在我们的构建服务器上夜间执行。它在我通过 Visual Studio 手动测试的同一台服务器上使用相同的部署。

但在 buildserver 上执行 ui 测试时,我们偶尔会遇到以下问题:

Test(s) failed. OpenQA.Selenium.WebDriverException : The HTTP request to the remote WebDriver server for URL http://localhost:7056/hub/session/bed1d0e7-efdc-46b6-ba07-34903519c44d/element/%7B8717bb19-96c7-44d3-b0ee-d4b989ae652d%7D/click timed out after 60 seconds.
----> System.Net.WebException : The operation has timed out
at OpenQA.Selenium.Remote.HttpCommandExecutor.CreateResponse(WebRequest request)
at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
--WebException
at System.Net.HttpWebRequest.GetResponse()
at OpenQA.Selenium.Remote.HttpCommandExecutor.CreateResponse(WebRequest request)

基本上,测试会点击一个上传按钮,该按钮之前的输入字段中填满了一个文件。由于文件非常小,因此只需几秒钟即可完成。然而,有时会达到 60 秒的超时。

有什么想法可以隔离根本问题吗?或者之前让任何人遇到过同样的问题?任何提示表示赞赏。谢谢。

最佳答案

我遇到了同样的错误:.NET WebDriver: 2.37, FF: 25.0.1。我注意到 Firefox 一直处于锁定状态,直到我退出我的测试应用程序,所以我构建了 Firefox 的调试版本,发现锁定发生在它写入 stderr 时。这给了我更改 webdriver 代码的线索,以便它不再重定向标准输出和错误,这解决了我的问题。似乎 WebDriver 以某种方式阻止了 std 错误。来自 MSDN:

Synchronous read operations introduce a dependency between the caller reading from the StandardError stream and the child process writing to that stream. These dependencies can cause deadlock conditions...

更多信息 here .

对于任何想要进行与我相同的调整的人:-

  1. 获取 Selenium 源代码。然后检查您正在使用的相同代码分支。

  2. 在 FireFoxBinary.cs 中:

    我。无论您在哪里找到 RedirectStandardError = true,请更改为 RedirectStandardError = false

    二。无论您在哪里找到 RedirectStandardOutput = true,都更改为 RedirectStandardOutput = false。 (对于非Windows,Executable.cs中也有)

    三。在 ConsoleOuput 中,将 'return this.stream.ReadToEnd()' 更改为 'return ""'

  3. 构建 WebDriver.dll 并将其替换为您的。

免责声明:这对我有用,但您的问题可能有所不同。据我所知,除了禁用控制台输出外,这没有任何不利影响,但可能还有其他我不知道的副作用。

我很想知道其他人是否发现了相同的情况。

既然我已经解决了我的问题,我就不会再深入挖掘了。如果任何 Selenium 组成员想要更多信息/日志/调整,我会很乐意这样做。

希望这个问题能尽快得到解决。

更新

目前似乎不支持 Firefox v25。参见 this comment .

2014 年 2 月 25 日更新

参见 this update :

Okay, this issue in general does not manifest itself in IE, or so it seems from the comments. I'd like people to try with Firefox and Chrome, and the .NET bindings 2.40.0 (will be the next release at the time of this writing) or later, and see if this is still happening.

I've seen fewer reports of this happening in Chrome since 2.35.0, so I need to know if this is still an issue with the .NET bindings and a recent chromedriver.exe.

2.40.0 may have a fix for at least one of the issues that may cause this in Firefox.

这解决了我的问题。查看更改日志,从 2014 年 1 月 31 日开始提交删除控制台日志记录重定向:

"No longer redirecting console output for Firefox in .NET bindings."

这是我在这里使用的解决方法。所以,这一切都是有道理的。

关于c# - Selenium WebDriver 偶尔抛出超时异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15268255/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com