7

我们每晚在 TeamCity 构建服务器上运行 Selenium 测试。

我们有一些测试在夜间运行期间间歇性地失败。

失败测试的截图并没有真正给出答案,所以我想记录下失败测试的执行情况。

我已经实现了以下内容来记录我想要调查的测试的执行情况。

        ScreenCaptureJob = new ScreenCaptureJob
        {
            CaptureRectangle = Screen.PrimaryScreen.Bounds,
            ShowFlashingBoundary = true,
            OutputPath = outputPath
        };

        ScreenCaptureJob.Start();

        Debug.WriteLine($"Status: {ScreenCaptureJob.Status}");

        Test code...

        ScreenCaptureJob.Stop();

如果测试失败,我会对捕获的视频进行编码并保存。当我在本地运行测试时,这很好用。

但是,当我在构建服务器上运行它时,ScreenCaptureJob 的状态为 NotStarted。

没有临时文件被写入磁盘,所以当测试失败时没有什么可以编码的。

        MediaItem mediaItem = new MediaItem(fileName);
        Job job = new Job();
        job.MediaItems.Add(mediaItem);
        job.ApplyPreset(Presets.VC1HD720pVBR);
        job.OutputDirectory = outputPath;
        job.Encode();

当我尝试从临时文件创建新的 MediaItem 时发生异常。

TestCleanup method UITests.FailingTest.TestCleanup threw exception. Microsoft.Expression.Encoder.InvalidMediaFileException: Microsoft.Expression.Encoder.InvalidMediaFileException: File not found.

EE4 安装在构建服务器上,我已经使用 EE4 程序本身测试了捕获。

有谁知道为什么 ScreenCaptureJob 无法在服务器上启动?

4

1 回答 1

1

在 Windows Server 上运行测试需要您添加该功能

用户界面

基础架构 > 桌面体验

安装 Microsoft Expression Encoder 所需的缺失依赖项。

如果您已经这样做了,但它不起作用,请阅读这篇文章,它非常有帮助,并且有一个指向 GitHub 配置文件的链接,其中包含用于视频录制的代码。作者通过界面使用 ScreenCaptureJob,听起来很棒。

于 2016-04-18T06:24:46.993 回答