编码的用户界面 - 如何在鼠标单击事件后捕获图像

时间:2018-04-12 17:49:26

标签: visual-studio coded-ui-tests

在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");

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

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

2 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:1)

  

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

默认情况下,编码ui test应该对其执行的每个操作进行屏幕截图。 您可以在测试的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;
    }