我有一套Selenium测试,它们可以在我的本地环境中完美运行,并且可以使用Browserstack Automate,但是在Azure DevOps上失败。
在Azure Devops上运行时,没有配置或设置更改。
我们在这里关注了所有文档:https://docs.microsoft.com/en-us/azure/devops/pipelines/test/continuous-test-selenium?view=vsts
随机测试失败,从来没有一样。
由于超时,测试总是失败。我等待页面加载5分钟,因此不会出现超时过低的情况。
没有防火墙,该应用程序是公共的。
身份验证总是成功的,因此测试能够加载应用程序。
不确定下一步如何尝试。
下面是Azure DevOps日志的副本。 4个测试通过,但其他所有测试均失败。通常,只有4-5次测试会失败。
此测试可以使用BrowserStack Automate(远程硒)和本地方法完美运行。
2018-11-17T05:40:28.6300135Z Failed StripeAdmin_WhenOnTab_DefaultSortIsByIdDescending
2018-11-17T05:40:28.6300461Z Error Message:
2018-11-17T05:40:28.6304198Z Test method CS.Portal.E2e.Tests.Admin.StripeAdmin.StripeAdminTests.StripeAdmin_WhenOnTab_DefaultSortIsByIdDescending threw exception:
2018-11-17T05:40:28.6305677Z OpenQA.Selenium.WebDriverTimeoutException: Timed out after 300 seconds
2018-11-17T05:40:28.6307041Z Stack Trace:
2018-11-17T05:40:28.6307166Z at OpenQA.Selenium.Support.UI.DefaultWait`1.ThrowTimeoutException(String exceptionMessage, Exception lastException)
2018-11-17T05:40:28.6307999Z at OpenQA.Selenium.Support.UI.DefaultWait`1.Until[TResult](Func`2 condition)
2018-11-17T05:40:28.6308188Z at CS.Portal.E2e.Tests.Utility.WebDriverUtilities.WaitForElement(IWebDriver driver, By by, Boolean mustBeDisplayed) in D:\a\1\s\CS.Portal.E2e.Tests\Utility\WebDriverUtilities.cs:line 26
2018-11-17T05:40:28.6319651Z at CS.Portal.E2e.Tests.Admin.StripeAdmin.StripeAdminTests.StripeAdmin_WhenOnTab_DefaultSortIsByIdDescending() in D:\a\1\s\CS.Portal.E2e.Tests\Admin\StripeAdmin\StripeAdminTests.cs:line 51
2018-11-17T05:40:28.6319982Z
2018-11-17T05:40:34.4671568Z Results File: D:\a\1\s\TestResults\VssAdministrator_factoryvm-az416_2018-11-17_03_08_24.trx
2018-11-17T05:40:34.4692222Z
2018-11-17T05:40:34.4695222Z Attachments:
2018-11-17T05:40:34.4697610Z D:\a\1\s\TestResults\672f4d28-5082-42e9-a7e7-f5645aadcfd8\VssAdministrator_factoryvm-az416 2018-11-17 03_02_43.coverage
2018-11-17T05:40:34.4697943Z
2018-11-17T05:40:34.4698278Z Total tests: 34. Passed: 4. Failed: 30. Skipped: 0.
答案 0 :(得分:4)
代码块中的几行内容将有助于更好地分析问题。
但是,由于您的测试始终会由于超时而失败,因此值得一提的是,通常 TimeoutException 是失败的结果{ {3}}。但是,还可能存在其他问题。
避免这些问题的一些方法如下:
PageLoad
或ImplicitWait
WebDriverWait
:请勿混合使用隐式和显式等待。这样做可能导致无法预测的等待时间。
您可以在WARNING
如果您使用的是 ChromeDriver 和 Chrome浏览器,则必须确保二进制文件与以下条目兼容:
在考虑上述因素的同时,您需要明智地实施Why should I ever use CSS selectors as opposed to XPath for automated testing?以及上面讨论的其他方法,这些方法将帮助您摆脱超时。
答案 1 :(得分:1)
这是我要执行的一些步骤:
在类似情况下对我们有帮助的是暂时将录像机添加到测试中,然后从头到尾观看VM上的测试执行过程。视频中可能有一些线索可以帮助您了解实际出了什么问题I was able to find this link for a C# example
此外,我还要仔细检查以确保Azure上的浏览器版本与运行良好的浏览器版本完全相同。使它们相同对于确保没有“魔术”至关重要。与默认浏览器窗口大小相同。
我将对不同测试失败的地方进行更详细的分析。
如果在代码中使用日期/时间API,请确保系统时间/语言环境/时区设置完全相同。否则在测试运行期间这些日子不会改变。总而言之-围绕日期进行调查。
我知道以上内容更像是一个一般性建议,但是从我的经验来看,这种“随机失败”可能是由任何看起来“不值得关注”的东西引起的。