我在 Specflow 功能文件中有大约 13 个测试,当我运行这些测试时,它们都通过了,除了一个间歇性的(有时它通过没有问题)
当它失败时,我收到以下消息之一:
起初,我认为这可能是由于 chrome 驱动程序版本或 selenium 网格版本,但这并不能解释其他测试通过,并且这个测试经常通过。
测试在由 docker 容器托管的 selenium 网格上运行。
似乎很奇怪,它只影响这个测试,它的配置和执行与其他测试没有什么不同,只是它正在执行的步骤,但它甚至没有达到测试的程度。
如果我重新启动 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 解决了错误并且测试正确执行。
但是为什么它以这种方式失败而不是未知元素异常,我不知道。
最佳答案
我将 chromedriver=2.40.565383 更新为 ChromeDriver=2.41.578700 ,platform=Linux 4.4
还添加我运行
sudo apt-get 更新
关于Selenium 随机错误没有意义,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49008450/