如何使用Testng侦听器在每次验证器/声明通过时触发屏幕截图而失败

时间:2018-07-18 10:07:15

标签: selenium-webdriver testng testng-eclipse

我想为每个验证器/声明通过和失败步骤拍摄屏幕截图。让我知道我们是否有testng侦听器可以帮助我实现此方案,因为我是硒webdriver和testng自动化测试的新手。

1 个答案:

答案 0 :(得分:0)

您可以按照以下步骤进行屏幕截图:

        File screen = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);      
        BufferedImage img = ImageIO.read(screen);
        File filetest = Paths.get(".").toAbsolutePath().normalize().toFile();
        ImageIO.write(img, "png", new File(filetest + "\\Screenshots\\"+ "ScreenshotName" + ".png"));

在这里,屏幕快照将使用绝对路径保存在项目工作区下的“屏幕快照”文件夹(您需要创建)中。如果要保存在其他位置,则可以找到相同的路径。

如果您希望每个@Test上的TestNG验证程序是通过还是失败,都可以在AfterMethod中实现。

@AfterMethod
public void testStatus(ITestResult result) throws IOException
{
    if (result.getStatus() == ITestResult.FAILURE) {
        testResult = "Test Fail :" + result.getName();
        testResult = "Details of Fail Testcase:" + result.getThrowable();
        }
}

您可以在testStatus方法中定义上述Screenshot实用程序,如果@Test失败,它将进行屏幕截图。