截取测试失败和异常的屏幕截图

托马斯·塔诺夫斯基(Tomasz Tarnowski)

你们中有谁知道针对测试失败和异常进行屏幕截图的可能解决方案?

我在其中添加了以下代码,TearDown()但因此它也会在通过测试时生成屏幕截图,因此它不是最佳解决方案:

DateTime time = DateTime.Now;
string dateToday = "_date_" + time.ToString("yyyy-MM-dd") + "_time_" + time.ToString("HH-mm-ss");
Screenshot screenshot = ((ITakesScreenshot)driver).GetScreenshot();
screenshot.SaveAsFile((settings.filePathForScreenShots + "Exception" + dateToday + ".png"), System.Drawing.Imaging.ImageFormat.Png);

我已经找到了这个主意:http: //yizeng.me/2014/02/08/take-a-screenshot-on-exception-with-selenium-csharp-eventfiringwebdriver/,可以使用WebDriverExceptionEventArgs,但是由于某些原因,它使还有一些随机截图,没有任何合理的解释。

我发现的其他想法是针对Java而不是与Selenium一起使用的NUnit,因此它们几乎没有用。

埃里克·厄耶博(ErikÖjebo)

如果将屏幕截图逻辑放在TearDown方法中,则无论测试成功与否,它将在每次测试完成后调用。

我使用一个具有包装测试并捕获所有异常的功能的基类。当测试失败时,将捕获异常并截取屏幕截图。

我在所有Selenium测试中都使用了这个基类,它看起来像这样:

public class PageTestBase
{
    protected IWebDriver Driver;

    protected void UITest(Action action)
    {
        try
        {
            action();
        }
        catch (Exception ex)
        {
            var screenshot = Driver.TakeScreenshot();

            var filePath = "<some appropriate file path goes here>";

            screenshot.SaveAsFile(filePath, ImageFormat.Png);

            // This would be a good place to log the exception message and
            // save together with the screenshot

            throw;
        }
    }
}

然后,测试类如下所示:

[TestFixture]
public class FooBarTests : PageTestBase
{
    // Make sure to initialize the driver in the constructor or SetUp method,
    // depending on your preferences

    [Test]
    public void Some_test_name_goes_here()
    {
        UITest(() =>
        {
            // Do your test steps here, including asserts etc.
            // Any exceptions will be caught by the base class
            // and screenshots will be taken
        });
    }

    [TearDown]
    public void TearDown()
    {
        // Close and dispose the driver
    }
}

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

截取UIPickerView的屏幕截图

来自分类Dev

仅在测试失败时创建屏幕截图

来自分类Dev

仅在测试失败时创建屏幕截图

来自分类Dev

如何截取尺寸的屏幕截图?

来自分类Dev

如何截取尺寸的屏幕截图?

来自分类Dev

截取特定布局的屏幕截图

来自分类Dev

截取屏幕特定部分的屏幕截图

来自分类Dev

如何截取比屏幕大的屏幕截图?

来自分类Dev

如何截取登录屏幕的屏幕截图?

来自分类Dev

如何在Android / iOS移动测试-C#中截取屏幕截图?

来自分类Dev

如何截取完整网页的屏幕截图?

来自分类Dev

是否可以从LiveCode中截取屏幕截图?

来自分类Dev

如何截取HTML表单的屏幕截图?

来自分类Dev

如何在python中截取屏幕截图?

来自分类Dev

如何截取完整网页的屏幕截图?

来自分类Dev

如何用HTML截取表格的屏幕截图?

来自分类Dev

截取特定应用程序的屏幕截图

来自分类Dev

在指定的坐标处截取屏幕截图

来自分类Dev

从Qt的选定区域(QRubberBand)截取屏幕截图

来自分类Dev

如何截取整个网页的屏幕截图?

来自分类Dev

FirefoxDriver截取不同大小的屏幕截图

来自分类Dev

CucumberJS:在每个步骤之后截取屏幕截图

来自分类Dev

截取视觉模糊视图的屏幕截图

来自分类Dev

无法使用 0 宽度截取屏幕截图

来自分类Dev

当MSpec / Selenium测试失败时,如何保存屏幕截图?

来自分类Dev

python在tearDown()方法中获取测试失败的屏幕截图

来自分类Dev

使用 Python 模块 pyautogui,截取屏幕截图并按日期和时间自动命名 .png 文件

来自分类Dev

如何截取dash、hud和应用程序菜单的屏幕截图?

来自分类Dev

如何截取单个视图对象而不是整个屏幕的屏幕截图?

Related 相关文章

热门标签

归档