如何将屏幕截图附加到 selenium java 黄瓜的 azure 报告

How to attach screenshot to azure report for selenium java cucumber

我在 azure devops 中 运行ning 我的 selenium java 测试服,执行后我可以看到结果,但是没有失败截图的附件。但是当我 运行 它在本地机器上时,正在生成的黄瓜报告包含屏幕截图。

下面是我用来附加屏幕截图的代码

@AfterStep
    public void embedScreenshot(Scenario scenario) throws Exception {
        if (scenario.isFailed()) {
            try {
                byte[] scrFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES);
                scenario.embed(scrFile, "image/png");
            } catch (WebDriverException somePlatformsDontSupportScreenshots) {
                System.err.println(somePlatformsDontSupportScreenshots.getMessage());
            }
        }
    }

是否有任何插件或其他任何东西可以用来在 Azure 报告中显示失败的屏幕截图?

恐怕目前没有可以在azure report中显示屏幕截图的插件。因为屏幕截图是在 .html 黄瓜报告中生成的。并且 azure devops 不支持在 build/release 管道中发布通用 HTML。

我想您看到的测试结果在 Azure 管道构建结果页面的 Tests 选项卡下。它是已发布到 azure devops 的 xml 格式报告,而不是包含屏幕截图的 html 报告。

有关此问题的 feature request 已提交给 Microsoft 开发团队。您可以对其进行投票或创建自己的一个。

作为解决方法,您可以使用 publish build artifacts task 将屏幕截图发布为管道的工件。

steps:
- task: PublishBuildArtifacts@1
  displayName: 'Publish Artifact: TestScreenshots'
  inputs:
    PathtoPublish: '$(System.defaultworkingdirectory)/target/home-page-html' #path to the test result folder(ie. html:target/home-page-html)
    ArtifactName: TestScreenshots

然后您可以从构建摘要页面获取屏幕截图,见下图:

如果屏幕截图位于多个测试结果文件夹中。您可以使用copy files task将屏幕截图复制到一个地方,然后发布以构建工件。