首页 > 解决方案 > 如何使用 testng 侦听器在每个验证器/断言通过和失败时触发屏幕截图

问题描述

我想为每个验证器/断言通过和失败步骤截屏。让我知道我们是否有 testng 侦听器可以帮助我实现这个场景,因为我是 selenium webdriver 和 testng 自动化测试的新手

标签: selenium-webdrivertestngtestng-eclipse

解决方案


您可以通过以下方式截屏:

        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 方法中定义上面的屏幕截图实用程序,如果 @Test 失败,它将进行屏幕截图。


推荐阅读