我们每晚都在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无法在服务器上启动?
答案 0 :(得分:1)
在Windows Server上运行测试需要您添加功能
用户界面
和
基础设施>桌面体验
安装Microsoft Expression Encoder所需的缺少的依赖项。
如果你已经这样做并且它不起作用,请阅读this article,它非常有用,并且有一个指向GitHub配置文件的链接,其中包含用于视频录制的代码。作者使用ScreenCaptureJob通过界面听起来很棒。