0

我有一套在 Windows 2019 Azure 托管代理中运行的 Selenium 测试。每个测试都会捕获特定网页的图像。

对于未来的测试运行,这些图像将用作比较网页的当前/实际状态时的基准。

当测试在托管代理中运行时,有没有办法在某处保存和检索这些基线图像?

笔记:

  • 目前我正在使用一种解决方法,以便我可以保存和上传从托管代理生成的基线图像。强制测试失败并将图像附加到测试结果中,TestContext.AddResultFile.然后下载每个图像并将其保存到本地 repo,然后在 azure repo 中同步。我不想再这样做了,因为已经生成了数百张图像。

  • 我无法使用从本地计算机生成的基线图像,因为托管代理具有不同的视口。因此,图像比较总是会发现基线和实际之间的差异。

4

1 回答 1

0

如果您通过 selenium 将屏幕截图保存到托管代理。您可以通过Publish Build Artifacts task将测试屏幕截图发布到 azure 管道构建工件。请参见下面的示例:

测试方法:

 webDriver = new ChromeDriver();
 webDriver.Manage().Window.Maximize();
 webDriver.Navigate().GoToUrl(test_url);
           
 Screenshot screenshot = ((ITakesScreenshot)webDriver).GetScreenshot();
 
# create a screenshots directory to save the screenshots.
Directory.CreateDirectory("screenshots");
 
 string attachmentsPath = Directory.GetCurrentDirectory() + "\\" +"screenshots"+"\\" +
            "testName1.png";

 # save the screenshot to the screenshots directory.
 screenshot.SaveAsFile(attachmentsPath);
                    
 Assert.AreEqual(webDriver.Title,"Google");
 webDriver.Quit();

上面的代码会将屏幕截图保存到文件夹文件screenshots夹中。

然后您可以添加复制文件任务以将屏幕截图复制到文件夹$(build.artifactstagingdirectory)

- task: CopyFiles@2
  displayName: 'Copy Files to: $(build.artifactstagingdirectory)'
  inputs:
    SourceFolder: '$(system.defaultworkingdirectory)'
    Contents: '**\screenshots\**'
    TargetFolder: '$(build.artifactstagingdirectory)'
    flattenFolders: true

接着。添加发布构建工件任务以发布屏幕截图以构建工件。

- task: PublishBuildArtifacts@1
  displayName: 'Publish Artifact: screenshots'
  inputs:
    PathtoPublish: '$(build.artifactstagingdirectory)'
    ArtifactName: screenshots

管道构建完成后。您可以直接从摘要页面下载屏幕截图。

在此处输入图像描述

在此处输入图像描述

于 2021-01-18T07:26:51.900 回答