将屏幕截图附加到TestNG失败的方法结果

Vla*_*lad 7 java testng selenium screenshot

我正在寻找一种方法将屏幕截图附加到TestNG报告的结果部分,以获取失败的方法.

到目前为止,我能够通过实现以下功能将我的屏幕截图附加到Reporter Output:

Reporter.log("<br> <img src=.\\screenshots\\" + fileName + " /> <br>");

但仍然在努力将它们添加到失败方法的测试结果部分.

我能够实现Listener并拦截onTestFailure操作,这里最初建议: 如何在testNG报告中包含故障屏幕截图

这是一个例子:

    @Override
public void onTestFailure(ITestResult result) { 
    Reporter.setCurrentTestResult(result); 
    Reporter.log("<br> <img src=.\\screenshots\\Untitled.png /> <br>");
    Reporter.setCurrentTestResult(null); 
}
Run Code Online (Sandbox Code Playgroud)

但是Reporter.log函数仍然在Reporter输出日志中推送我的信息,但不在Results-> Failed methods-> Failed method log中.

更新(2014年3月14日):我附上了截图以澄清我的问题.问题不在于捕获屏幕截图并将其附加到Report.那部分工作正常.问题是截图附加到报告的测试输出部分,但我想在结果 - >失败的方法中看到它.

在此输入图像描述

sat*_*ohn 0

我还实现了相同的扩展 Testng TestListenerAdapter。通过捕获屏幕截图,然后使用 onTestFailure 将其附加到 Testng Report,其中图像尺寸为 height=100 和 width=100。请参阅下面的内容是否有助于解决您的问题

    File scrFile = ((TakesScreenshot) WebdriverManager.globalDriverInstance).getScreenshotAs(OutputType.FILE);
      //Needs Commons IO library
      try {
        FileUtils.copyFile(scrFile, new File(file.getAbsolutePath()+ "/selenium-reports/html/" + result.getName() + ".jpg"));
        Reporter.log("<a href='"+ file.getAbsolutePath()+"/selenium-reports/html/" + result.getName() + ".jpg'> <img src='"+ file.getAbsolutePath()+"/selenium-reports/html/"+ result.getName() + ".jpg' height='100' width='100'/> </a>");
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }
    Reporter.setCurrentTestResult(null);
Run Code Online (Sandbox Code Playgroud)