编码 UI - 如何在鼠标单击事件后捕获图像

Coded UI - How to Capture Image After a Mouse Click Event

在录制的 Coded UI 会话中,每次单击鼠标后捕获图像的最佳选项是什么?

例如,在UIMap.Designer.Cs文件中我输入了图像捕获行:

Mouse.Click(uIOutagesandSafetyHyperlink, new Point(62, 2));
Image MSOPic1 = UITestControl.Desktop.CaptureImage();
MSOPic1.Save(@"C:\Automation\TestAutomation\web\Recordings\FullSite1\Screenshots\MSO\HomePage_" + DateTime.Now.ToString("ddMMyyyyHHmmss") + ".png");

上面的代码截取了屏幕截图,但没有截取当前浏览器的屏幕截图,只是截取了当前浏览器 window 不存在的另一个屏幕。如何捕获正在进行测试的活动浏览器的屏幕截图?

还有一个问题:Visual Studio是否提供了另一种在播放过程中捕获图像的方法?喜欢通过配置?

UITestControl class 有一个 CaptureImage 方法。要获取当前浏览器的图像,请找到其 UITestControl 对象(可能派生自该对象)并调用其 CaptureImage 方法。

请不要编辑 uimap.designer.cs 文件,因为它是自动生成的文件,您的编辑可能会丢失。参见 this answer

One more question: Does Visual Studio provide an alternative way to capture images during playback? Like through configuration?

默认情况下,编码 ui 测试应为其执行的每个操作截取屏幕截图。 您可以在测试的 html 输出中找到这些屏幕截图。

参见:https://msdn.microsoft.com/en-us/library/jj159363.aspx

如果在任何情况下它都没有为您的测试启用,您必须设置: Playback.PlaybackSettings.LoggerOverrideState = HtmlLoggerState.AllActionSnapshot;

如果您想在所有测试和所有操作中使用此设置,请在您要应用它的每个测试的 [TestInitialize()] 方法中调用它。

像这样:

    [TestInitialize()]
    public void MyTestInitialize()
    {
        Playback.PlaybackSettings.LoggerOverrideState = HtmlLoggerState.AllActionSnapshot;
    }