当前位置: 首页 > 知识库问答 >
问题:

Selenium错误-对远程WebDriver的HTTP请求在60秒后超时

齐铭
2023-03-14

我已经使用Selenium好几个月了,我们用它来自动化一些内部测试过程。剧本一直很顺利。我最近使用FF 27.01升级到了C#2.40.0 webdriver,我们的脚本现在在随机的地方失败,出现以下错误。

[Portal.SmokeTest.SmokeRunTest.Booking] TearDown method failed. OpenQA.Selenium.WebDriverException : The HTTP request to the remote WebDriver server for URL htt(p)://localhost:7055/hub/session/56e99e88-ba17-4d12-bef1-c6a6367ccc2f/element timed out after 60 seconds.
  ----> System.Net.WebException : The operation has timed out
TearDown : OpenQA.Selenium.WebDriverException : The HTTP request to the remote WebDriver server for URL htt(p)://localhost:7055/hub/session/56e99e88-ba17-4d12-bef1-c6a6367ccc2f/window timed out after 60 seconds.
  ----> System.Net.WebException : The operation has timed out
[09:01:20]
[Portal.SmokeTest.SmokeRunTest.Booking] TearDown method failed. OpenQA.Selenium.WebDriverException : The HTTP request to the remote WebDriver server for URL htt(p)://localhost:7055/hub/session/56e99e88-ba17-4d12-bef1-c6a6367ccc2f/element timed out after 60 seconds.
  ----> System.Net.WebException : The operation has timed out
TearDown : OpenQA.Selenium.WebDriverException : The HTTP request to the remote WebDriver server for URL htt(p)://localhost:7055/hub/session/56e99e88-ba17-4d12-bef1-c6a6367ccc2f/window timed out after 60 seconds.
  ----> System.Net.WebException : The operation has timed out
   at OpenQA.Selenium.Support.UI.DefaultWait`1.PropagateExceptionIfNotIgnored(Exception e)
   at OpenQA.Selenium.Support.UI.DefaultWait`1.Until[TResult](Func`2 condition)
   at Portal.Test.Helpers.Process_Bookings.OpenBookings.SelectBooking(String bookingnumber)
   at Portal.SmokeTest.SmokeRunTest.Booking() in d:\TeamCityAgent\work\dac1dcea7f2e80df\SmokeTests\SmokeRunTest.cs:line 68
--WebException
   at System.Net.HttpWebRequest.GetResponse()
   at OpenQA.Selenium.Remote.HttpCommandExecutor.CreateResponse(WebRequest request)
--TearDown
   at OpenQA.Selenium.Remote.HttpCommandExecutor.CreateResponse(WebRequest request)
   at OpenQA.Selenium.Remote.HttpCommandExecutor.Execute(Command commandToExecute)
   at OpenQA.Selenium.Firefox.Internal.ExtensionConnection.Execute(Command commandToExecute)
   at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
   at OpenQA.Selenium.Remote.RemoteWebDriver.Close()
   at Portal.Test.Helpers.Setup.CloseWebdriver()
   at Portal.SmokeTest.SmokeRunTest.TearDown() in d:\TeamCityAgent\work\dac1dcea7f2e80df\SmokeTests\SmokeRunTest.cs:line 162
--WebException
   at System.Net.HttpWebRequest.GetResponse()
   at OpenQA.Selenium.Remote.HttpCommandExecutor.CreateResponse(WebRequest request)

我设法追踪到的最新错误是一行代码:

_setup.driver.FindElement(By.XPath("//button[@class='buttonSmall lockBookingButton']")).Click();

令人恼火的是,试图解决这个问题被证明是困难的,就像我在本地机器上运行测试一样,调试通过了。此外,如果我在运行测试的构建机器上通过NUNIT runner运行它,它也会通过。在使用Teamcity时,它似乎只是作为我们自动构建运行过程的一部分失败。正如我所说,这几个月前一直运行良好,唯一改变的是selenium webdriver工具包。

我以前在调试时遇到过这个问题,当调用Click()代码行时,Firefox似乎锁定了,只有停止测试才能让Firefox继续。这里有很多建议,包括修改webdriver源代码?如果可能的话,如果其他人能提供任何建议,我不想走这条路。

共有3个答案

申浩广
2023-03-14

我第一次遇到这个问题是在几个月前(也是在click()命令中),从那时起,它一直是我的一个问题。这似乎是某种形式的问题。NET Selenium绑定。IE驱动程序开发人员的这篇博文有助于解释发生了什么:

http://jimevansmusic.blogspot.com/2012/11/net-bindings-whaddaymean-no-response.html

不幸的是,这个问题似乎没有真正的解决办法。每当有人向Selenium开发人员提出这个问题时(参见此处),这是一个典型的响应:

我们需要一个可复制的场景,必须包括一个样本页面或一个链接到一个公共网站的页面,该问题可以被复制。

如果您能够提交一个始终如一的可复制的测试用例,这将非常有助于永远消除这个错误。

这就是说,也许你可以在这段时间内尝试这种解决方法。如果您试图“代码> > Code()/Code >具有包含JavaScript的<代码> OnCase< /Code >属性,请考虑使用JavaScript执行器直接执行该代码,而不是调用 Code()/Code >命令。我发现直接执行onclickJavascript可以让我的一些测试通过。

尉迟国发
2023-03-14
new FirefoxDriver(new FirefoxBinary(),new FirefoxProfile(),TimeSpan.FromSeconds(180));

使用上面的代码行启动你的浏览器。它对我有用。

林和畅
2023-03-14

我在使用Chrome驱动程序(v2.23)/通过TeamCity运行测试时遇到了类似的问题。我通过在Chrome选项中添加“no sandbox”标志解决了这个问题:

var options = new ChromeOptions();
options.AddArgument("no-sandbox");

我不确定FF驱动程序是否有类似的选择。据我所知,这个问题与TeamCity在SYSTEM帐户下运行硒有关。

 类似资料: