Joh*_*ell 8 c# selenium selenium-webdriver azure-devops webdriverwait
我有一套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(远程selenium)和本地完美运行.
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.
Run Code Online (Sandbox Code Playgroud)
代码段中的几行内容将有助于更好地分析问题。
但是,由于您的测试总是会因超时而失败,因此值得一提的是,通常TimeoutException是ExpectedConditions 失败 的结果。但是,也可能存在其他问题。
避免这些问题的一些方法如下:
PageLoad,ImplicitWait或WebDriverWait警告:请勿混合使用隐式和显式等待。这样做可能导致无法预测的等待时间。
您可以在如何确定是否为Selenium加载了一些HTML元素中找到了详细的讨论。
如果您使用的是ChromeDriver和Chrome浏览器,则必须确保以下二进制文件兼容:
考虑到上述因素,您需要与上述其他方法一起明智地实施“ 定位器策略”,这将帮助您摆脱超时问题。
以下是我要做的一些步骤:
在类似的情况下,对我们有帮助的是临时添加一个录像机到测试中,然后在虚拟机上观察从开始到失败的测试执行过程。视频上可能有一些线索可以帮助您了解实际出了什么问题,我可以找到 C# 示例的链接
另外,我会仔细检查以确保 Azure 上的浏览器版本与运行中的浏览器版本完全相同,一切正常。使它们相同对于确保不存在“魔法”至关重要。默认浏览器窗口大小相同。
我会对不同测试失败的地方进行更详细的分析。
如果您在代码中使用日期/时间 API,请确保系统时间/区域设置/时区设置完全相同。或者在测试运行期间日子不会改变。总而言之 - 围绕日期进行调查。
我知道上述内容更像是一般性建议,但根据我的经验,这种“随机故障”可能是由任何看似“不值得关注”的事情引起的。
| 归档时间: |
|
| 查看次数: |
614 次 |
| 最近记录: |