selenium Selence测试在Azure DevOps上失败,但在本地和Jenkins中有效

hts6caw3  于 2022-11-10  发布在  Jenkins
关注(0)|答案(1)|浏览(182)

我们有一套Selify/c#测试,已经在以下地点进行了测试。
本地在Visual Studio中-一切正常,一切都通过了第一次运行
Jenkins服务器-一切正常,99%通过第一次运行,100%通过第一次重新运行
Azure发布流水线--大部分都很好。共测试97次,94次通过,其余3次失败。
看看日志,似乎测试正在超时,因为在60秒内没有找到元素,然而这从来没有失败过本地或Jenkins,那么为什么在Azure管道上呢?所有3种方法都命中被测试应用程序的相同测试服务器,并且它们都使用相同的测试代码,并且在每个测试中都没有找到相同的元素。
我们使用的是VS 2022 Prof、Selence 4.4、MSTest 2.2、specflow 3.9
我已经检查了ChromeDriver版本,它是正确的
这是Azure服务器上的典型错误

-> error: The HTTP request to the remote WebDriver server for URL http://localhost:59062/session/899fc92fbc887b4d8431ecfb7e51256f/element timed out after 60 seconds. (125.3s)
 <pre>   at OpenQA.Selenium.Remote.HttpCommandExecutor.Execute(Command commandToExecute)
    at OpenQA.Selenium.Remote.DriverServiceCommandExecutor.Execute(Command commandToExecute)
    at OpenQA.Selenium.WebDriver.Execute(String driverCommandToExecute, Dictionary`2 parameters)
    at OpenQA.Selenium.WebDriver.FindElement(String mechanism, String value)
    at OpenQA.Selenium.By.<.ctor>b__11_0(ISearchContext context)
    at OpenQA.Selenium.By.FindElement(ISearchContext context)
    at OpenQA.Selenium.WebDriver.FindElement(By by)
    at TestApp.Pages.TestPage.MatchTheGrandTotal() in D:\a\r1\a\_Regression\PelTest\PageObjects\IntelPage.cs:line 325
    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, TimeSpan& duration)
    at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.ExecuteStep(IContextManager contextManager, StepInstance stepInstance)
    at TechTalk.SpecFlow.Infrastructure.TestExecutionEngine.OnAfterLastStep()
    at TechTalk.SpecFlow.TestRunner.CollectScenarioErrors()
f0brbegy

f0brbegy1#

我也遇到过类似的问题。这与用户界面中的同步无关,而是服务器的响应时间超过了默认超时60秒。在启动浏览器时增加响应超时。
在以下代码片断中增加Chrome浏览器中响应超时的语法。检查通过执行将超时增加到2分钟/3分钟,并计算出在所有执行环境中运行良好的理想响应时间。

driver = new ChromeDriver(serviceObj, chromeOptions, TimeSpan.FromMinutes(2));

相关问题