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