我在一个Specflow功能文件中有大约13个测试,当我运行这些测试时,它们都会通过,但是间歇性地通过(有时会没有问题)
如果失败,我会收到以下消息之一:
起初,我认为这可能是由于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解决了错误并且测试正确进行了。
但是为什么它以这种方式失败而不是未知的元素异常我不知道。
答案 0 :(得分:0)
我将chromedriver = 2.40.565383更新为ChromeDriver = 2.41.578700,platform = Linux 4.4
还添加我运行
sudo apt-get更新