Selenium随机错误没有意义

时间:2018-02-27 12:12:47

标签: selenium docker selenium-webdriver selenium-grid

我在一个Specflow功能文件中有大约13个测试,当我运行这些测试时,它们都会通过,但是间歇性地通过(有时会没有问题)

如果失败,我会收到以下消息之一:

  • 未知错误:因页面崩溃而删除会话
  • chrome无法访问

起初,我认为这可能是由于Chrome驱动程序版本或selenium网格版本,但这并不能解释其他测试通过,而且这一次测试经常通过。

测试在由docker容器托管的selenium网格上运行。

它似乎很奇怪它只影响这一个测试,它的配置和执行与其他测试只是它执行的步骤没有什么不同,但它甚至没有达到测试。< / p>

如果我重新启动docker容器并基本上清理网格,那么当我自己运行它时,它似乎会从我的visual studio中手动传递。

但是当我运行Jenkins作业时,它运行它们全部失败

有什么想法?

堆栈跟踪

Error Message
System.InvalidOperationException : unknown error: session deleted because of page crash
from unknown error: cannot determine loading status
from tab crashed
  (Session info: headless chrome=64.0.3282.140)
  (Driver info: chromedriver=2.35.528139 (47ead77cb35ad2a9a83248b292151462a66cd881),platform=Linux 4.9.77-31.58.amzn1.x86_64 x86_64)
TearDown : OpenQA.Selenium.WebDriverException : no such session
  (Driver info: chromedriver=2.35.528139 (47ead77cb35ad2a9a83248b292151462a66cd881),platform=Linux 4.9.77-31.58.amzn1.x86_64 x86_64)
Stacktrace
   at OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse)
   at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
   at OpenQA.Selenium.Remote.RemoteWebDriver.FindElement(String mechanism, String value)
   at MoneyUITests.Methods.General.WaitForElementAndSelectDd(String dropdown, String option) in C:\Program Files (x86)\Jenkins\workspace\Money - LeadGenTests\MoneyUITests\Methods\General.cs:line 242
   at MoneyUITests.Steps.Banking.LoanSteps.WhenIFillInTheSecredLoanComparisonForm() in C:\Program Files (x86)\Jenkins\workspace\Money - LeadGenTests\MoneyUITests\Steps\Banking\LoanSteps.cs:line 36
   at TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration)
   at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStepMatch(BindingMatch match, Object[] arguments)
   at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(IContextManager contextManager, StepInstance stepInstance)
   at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep()
--TearDown
   at OpenQA.Selenium.Remote.RemoteWebDriver.UnpackAndThrowOnError(Response errorResponse)
   at OpenQA.Selenium.Remote.RemoteWebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
   at OpenQA.Selenium.Remote.RemoteWebDriver.GetScreenshot()
   at MoneyUITests.Methods.General.TakeScreenshot(Object methodName) in C:\Program Files (x86)\Jenkins\workspace\Money - LeadGenTests\MoneyUITests\Methods\General.cs:line 548
   at MoneyUITests.Methods.BaseContext.AfterScenario() in C:\Program Files (x86)\Jenkins\workspace\Money - LeadGenTests\MoneyUITests\Methods\BaseContext.cs:line 46
   at TechTalk.SpecFlow.Bindings.BindingInvoker.InvokeBinding(IBinding binding, IContextManager contextManager, Object[] arguments, ITestTracer testTracer, TimeSpan& duration)
   at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.InvokeHook(IBindingInvoker invoker, IHookBinding hookBinding, HookType hookType)
   at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.FireEvents(HookType hookType)
   at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnScenarioEnd()

更新

这不是内存问题,这被认为是一个时间问题。

这可能是为什么它是断断续续的,我通过评论所有内容以及它失败的哪一行的反复试验来调试。

经过多次来回失败之后,我发现在它前面放了一个Thread.Sleep解决了错误并且测试正确进行了。

但是为什么它以这种方式失败而不是未知的元素异常我不知道。

1 个答案:

答案 0 :(得分:0)

我将chromedriver = 2.40.565383更新为ChromeDriver = 2.41.578700,platform = Linux 4.4

还添加我运行

sudo apt-get更新