仅在after方法中获取selenium(java)中的屏幕截图

时间:2015-04-03 10:32:25

标签: java selenium testng

我使用testng框架工作在java selenium中创建了一个自动化套件。基本上在我的套件中,方案放在方法之前和之后。 我想为每个失败并通过测试场景拍摄屏幕截图。为此我创建了一个单独的类并在每个脚本中调用它以在after方法之前捕获屏幕截图。 我在这里遇到的问题是如果方案失败,脚本停止执行并且它没有移动到截取代码行,因此它没有捕获失败的截图。 因此,我希望将截屏程序仅放置在after方法之后,因此在驱动程序退出之前,它将采用截屏,尽管通过/失败的方案结果。 我使用testng为近20个场景编写了代码。 有人可以通过after方法告诉我代码只是为了拍摄截图,而不会影响我写的代码。

屏幕截图程序应该只在after方法中,因此它会在驱动程序退出之前捕获屏幕。

1 个答案:

答案 0 :(得分:0)

确保捕获异常,这样就不会过早退出代码。

例如,这是我在每次测试运行(通过或失败)后截取屏幕截图的方式。我使用异常值(如果有的话)动态命名屏幕截图文件。

首先,一个示例测试方法:

    [DataSource("System.Data.SqlClient", "Data Source=DEV338\\X2B;Initial Catalog=SeleniumDb;Integrated Security=True",
        "dbo.F_single_ErkenningAannemerKlasse1", DataAccessMethod.Sequential), TestMethod]
    public void erkenningAannemerKlasse1()
    {
        try
        {
            frontUser.erkenningAannemerKlasse1(data);
        }
        catch (Exception e)
        {
            exception = e.Message + " " + e.StackTrace;
        }
    }

然后在每次测试后执行此方法。 Microsoft UnitTest框架中的默认行为,在本例中为。

    [TestCleanup()]
    public void Cleanup()
    {
        frontUser.takeScreenshot(data.get("testnaam"), data.get("datarow"), exception);
        frontUser.closeBrowser();
    }