在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是否提供了一种在播放期间捕获图像的替代方法?喜欢通过配置?
答案 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;
}