webdriverexception:抛出一个带有空响应的异常,并停止selenium测试运行

本文关键字:异常 响应 测试运行 selenium 一个 webdriverexception | 更新日期: 2023-09-27 18:07:00

我正在使用firefox浏览器驱动程序运行firefox 41.0.2Nunit 3.4.1硒2.47.0specflow魅惑我的测试是并行运行的

过了几天,我的测试一直未能完成,而运行jenkins,运行卡住了一个进程,不能继续运行的其余部分。在运行20多个场景时,我间歇性地能够在本地重现错误。我得到下面的例外,有人见过这个问题吗?

OpenQA.Selenium。WebDriverException:发送一个HTTP请求到远程WebDriver服务器的URL http://localhost:7056/hub/session/d0a83b9c-bd79-4218-8eac-dc8b273f8f40/element/%7B84966a91-06c4-42dd-98c0-278ed35e3667%7D/attribute/value时抛出了一个空响应的异常。

异常状态为ConnectFailure,消息为:Unable to connect to The remote server----> system.net.webeexception:无法连接到远程服务器----> System.Net.Sockets.SocketException: No connection could make,因为目标机器主动拒绝它127.0.0.1:7056

+++++++++++++++++++堆栈跟踪:在OpenQA.Selenium.Remote.HttpCommandExecutor。连接CreateResponse (WebRequest请求)在OpenQA.Selenium.Firefox.FirefoxDriverCommandExecutor。commandToExecute执行(命令)在OpenQA.Selenium.Remote.RemoteWebDriver。执行(String driverCommandToExecute, Dictionary 2 parameters) at OpenQA.Selenium.Remote.RemoteWebElement.GetAttribute(String attributeName) at TeamHours.Automation.StandAlone.WebComponents.Pages.WeeklySalesForecastPage.<Save>b__0(IWebElement s) in c:'Program Files (x86)'Jenkins'jobs'Automation Build Develop'workspace'TeamHours.Automation.StandAlone.WebComponents'Pages'WeeklySalesForecastPage.cs:line 38 at System.Linq.Enumerable.WhereSelectEnumerableIterator .)在System.Linq.Enumerable。任意[TSource](IEnumerable 1 source, Func 2 predicate)在TeamHours.Automation.StandAlone.WebComponents.Pages. weeklysalesforecastpage . save()中c:'Program Files (x86)'Jenkins'jobs'Automation构建开发'workspace'TeamHours.Automation.StandAlone.WebComponents'Pages'WeeklySalesForecastPage.cs:行39在c:'Program Files (x86)'Jenkins'jobs'Automation构建开发'workspace'TeamHours.Automation.StandAlone.CommonSteps'Steps'SalesForecast'WeeklySalesForecastGraphsSteps.cs:第73行在TechTalk.SpecFlow.Bindings.BindingInvoker。调用绑定,IContextManager contextManager,对象[]参数,ITestTracer testTracer, TimeSpan&持续时间)在TechTalk.SpecFlow.Infrastructure.TestExecutionEngine。ExecuteStepMatch(BindingMatch,对象[]参数)在TechTalk.SpecFlow.Infrastructure.TestExecutionEngine。ExecuteStep (StepInstance StepInstance)在TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep ()在c:'Program Files (x86)'Jenkins'jobs'Automation构建开发'workspace' teamhours . automation . standalone . regressiontests 'Features'Schedule' schedulegraph .Features. cs:第0行在TeamHours.Automation.StandAlone.RegresionTests.Features.Schedule.ScheduleGraphFeature。VerifyScheduleGraphShowsCorrectPeopleAndOverstaffedWhenDemandIsExceeded(字符串角色,字符串标签,字符串链接,字符串noOfItems,字符串peoplerrequired,字符串itemsOrSales,字符串tab2,字符串视图,字符串总数,字符串tab3,字符串type1,字符串type2,字符串type3,字符串[]exampleTags)在c:'Program Files (x86)'Jenkins'jobs'Automation构建开发'workspace' teamhour.automa.standalone.regressiontests 'Features'Schedule'ScheduleGraph。特点:133行——WebException在System.Net.HttpWebRequest.GetResponse ()在OpenQA.Selenium.Remote.HttpCommandExecutor。连接CreateResponse (WebRequest请求)——SocketException在System.Net.Sockets.Socket。DoConnect(EndPoint endPointSnapshot, SocketAddress, SocketAddress)在System.Net.ServicePoint。ConnectSocketInternal(Boolean connectFailure, Socket s4, Socket s6, Socket&套接字,IPAddress&地址,ConnectSocketState状态,IAsyncResult asyncResult,异常&例外)

webdriverexception:抛出一个带有空响应的异常,并停止selenium测试运行

我们发现这个问题可能与主机上的TCP端口耗尽有关。关于这一点还有其他材料,但基本上web驱动程序耗尽了所有端口,因为驱动程序轮询操作系统以获取可用端口,因此它们被困在等待状态。修复涉及修改注册表,以增加可用端口的数量或减少它们处于等待状态的时间。

花了一个小时后,我找到了确切的问题。在我的例子中,我使用Nuget软件包管理器中的如下版本。

  1. 硒。支持- v3.13.1
  2. 硒。WebDriver - v3.13.1
  3. Selenium.WebDriver。idriver - v3.13.0

在将它们降级到下面的低版本后,一切都如预期的那样工作。

  1. 硒。支持- v3.12.1
  2. 硒。WebDriver - v3.12.1
  3. Selenium.WebDriver。idriver - v3.12.0

此问题可能发生在您启动的端口无法访问。所以你的浏览器窗口被关闭了,在这种情况下,每个测试用例引用QuitDriver而不是下一个测试用例,退出驱动程序必须在完成测试套件后触发。在Selenium中,我们需要使用[OneTimeTearDown]而不是[TearDown]..

当我有这个错误时,答案一直是"更新****driver.exe"。在我的情况下,ChromeDriver.exe,在你的情况下,它可能是FireFoxDriver.exe

对于我的情况,我很早就处置using语句的驱动程序。

 using   IWebDriver webDriver = new ChromeDriver("C:''Programs2''chromedriver", options);

我把它移走了,它工作了。

我认为GeckoDriver.exe/ChromeDriver.exe/IEDriverServer.exe与各自的浏览器不兼容是导致此问题的原因。

我正面临着同样的问题,更新我的chrome浏览器到最新的为我工作。所以升级/降级你的浏览器(或)相应的驱动程序可以帮助解决这个问题。

简而言之,你必须保持你的浏览器与相应驱动程序的兼容版本同步。

在我的情况下,这是因为你(出于某种原因)有两个版本的浏览器驱动程序文件夹存在于我的项目文件夹

背景:

假设您使用Nuget-Package-Manager来安装selenium web驱动程序,那么在您的项目下将有一个名为"packages"的文件夹。

在"packages"文件夹中,您将看到为您的解决方案安装的所有nuget包。

问题所在:在"packages"文件夹中有两个不同版本的Firefox驱动程序:0.20和0.21。

一旦我删除了0.20文件夹,只保留0.21,问题就解决了。

可能的原因:你已经在这个项目上工作了一段时间,并且有几个分支,你在不同的分支中有不同的web驱动NuGet版本。

当你从一个版本合并到另一个版本时,低版本不会自动删除,但新版本也会被安装,并且两个版本都存在。

同一web驱动程序的2个不同版本

我使用[OneTimeTearDown]而不是[TearDown],它工作。