Mstest C#Selenium的HTML截图记者

时间:2015-05-08 11:37:52

标签: c# selenium protractor mstest

我正在使用Selenium + C# + MsTest框架来测试HTML5应用程序。

我正在寻找一个好的报告格式。类似于量角器中的html-screenshot-reporter

没有任何现成的插件可供使用。有关如何使用Selenium + C# + MsTest实现此任何建议。

我希望问题很明确!如果需要进一步澄清以使问题可以理解,请告诉我!

的问候,
Sakshi

1 个答案:

答案 0 :(得分:2)

它远非完美(因为你必须为每个测试类引用它并且文件并没有真正附加)但这就是我所做的。

  1. 为处理全局清理逻辑的所有测试创建了一个基类
  2. 添加了公共TestContext属性
  3. 实施[TestCleanup]方法
  4. 比较测试结果并保存屏幕截图
  5. 使用AddResultFile将文件路径添加到测试报告
  6. 测试类

    [TestClass]
    public class FailingTest : TestsBase
    {
        [TestMethod]
        public void Failing()
        {
            throw new Exception("Fail");
        }
    }
    

    基础课程

    [TestClass]
    public abstract class TestsBase
    {
        public TestContext TestContext { get; set; }
    
        [TestCleanup]
        public void SaveScreenshotOnFailure()
        {
            if (TestContext.CurrentTestOutcome == UnitTestOutcome.Passed)
                return;
    
            var filename = Path.GetRandomFileName() + ".png";
            using (var screenshot = ScreenCapture.CaptureDesktop())
                screenshot.Save(filename, ImageFormat.Png);
    
            TestContext.AddResultFile(filename);
        }
    }
    

    屏幕截图类

    public class ScreenCapture
    {
        public static Image CaptureDesktop()
        {
            // Determine the size of the "virtual screen", which includes all monitors.
            var screenLeft = SystemInformation.VirtualScreen.Left;
            var screenTop = SystemInformation.VirtualScreen.Top;
            var screenWidth = SystemInformation.VirtualScreen.Width;
            var screenHeight = SystemInformation.VirtualScreen.Height;
    
            // Create a bitmap of the appropriate size to receive the screenshot.
            var screenshot = new Bitmap(screenWidth, screenHeight);
    
            // Draw the screenshot into our bitmap.
            using (Graphics g = Graphics.FromImage(screenshot))
                g.CopyFromScreen(screenLeft, screenTop, 0, 0, screenshot.Size);
    
            return screenshot;
        }
    }
    

    缺点是您可能不希望为所有测试继承单个基类,并且实际文件似乎没有附加到报表中,只包含路径。如果您在CI工具归档中使用它,那么它应该很简单。

    此屏幕捕获类(got it from here)非常简单,并且依赖于Windows.Forms dll,我使用它,因为它很容易获得整个多屏桌面镜头。 Here's another example of how to do它,即每个窗口。