【问题标题】:Selenium tests fail with azure pipeline sometimes and pass locallySelenium 测试有时会因天蓝色管道而失败并在本地通过
【发布时间】:2019-11-15 15:19:23
【问题描述】:

测试用例在单击按钮后未找到链接或任何验证消息而失败。

我使用显式等待页面加载:

var waitForDocumentReady = new WebDriverWait(WebDriver, TimeSpan.FromSeconds(10));
            waitForDocumentReady.Until((wdriver) => (WebDriver as IJavaScriptExecutor).ExecuteScript("return document.readyState").Equals("complete"));

等待验证消息的特定 div:

 WebDriverWait wait = new WebDriverWait(WebDriver, TimeSpan.FromSeconds(10));
            wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementExists(By.ClassName("validationErrors")));

但测试用例有时会通过管道,有时会失败。

【问题讨论】:

  • 您如何在 azure 中运行测试用例?无头,或者您正在渲染浏览器?在非无头模式下运行时,我遇到过此类无法解释的故障问题。
  • @Gkm 下面的答案是否可以帮助您解决此问题,您能分享任何更新吗?
  • @Christine,对我来说正好相反。当我将 WebDriver 设置为 headed 模式并且版本被选中“测试组合包含 UI 测试”时,大多数在 AzDo 上运行良好。但是,当我指定 WebDriver Headless=true 时,按下 [Save] 按钮后的测试将失败。我还没有解决按钮的处理问题。还有其他堆栈溢出测试可以解决这种现象。
  • @donvnielsen 您在无头模式下的问题可能与启用的某些设置有关 - 我个人看到无头模式的问题,其中未指定浏览器大小,导致默认浏览器大小较小没有正确呈现页面。如果您需要对这些设置进行故障排除的帮助,请随时在驱动程序初始化时发布您的 chrome 选项。

标签: selenium selenium-webdriver azure-devops azure-pipelines timeoutexception


【解决方案1】:

我会推荐以下:

  • 当您的测试失败时,请在该时刻拍摄快照。 有时当您在本地运行测试时,网络通信 比在服务器上运行要快一点。这意味着微调器或 加载控件可能不会出现在本地,因为检索到了结果 足够快,但加载器会在延迟时出现 服务器向客户端发送响应。
  • 如果您尝试在远程网格上以 FF 无头模式运行测试 那么根据我的经验,它还不稳定。
  • 识别经常失败的失败场景中的模式,并 尝试在循环中多次运行它们并识别 失败。在我的一个案例中,性能存在实际错误 曾经在测试时被复制的应用程序 立即批量运行

【讨论】:

    【解决方案2】:

    我遇到了这个问题,除了我的测试在 Azure Pipelines 中总是失败但在本地通过。没有在“无头”模式下运行解决了我的问题。为此,请确保在“Visual Studio 测试”任务中选中“测试组合包含 UI 测试”。

    【讨论】:

      【解决方案3】:

      您需要注意以下几点:

      【讨论】:

        猜你喜欢
        • 2019-03-18
        • 1970-01-01
        • 1970-01-01
        • 2021-07-16
        • 2022-01-17
        • 2021-10-27
        • 1970-01-01
        • 1970-01-01
        • 2014-10-13
        相关资源
        最近更新 更多