当前位置: 首页 > 面试题库 >

如何将失败屏幕截图包含到testNG报告中

单于善
2023-03-14
问题内容

目前,我正在以这种方式拍摄测试失败的屏幕截图:

@AfterMethod(alwaysRun=true)
public void catchExceptions(ITestResult result){
    Calendar calendar = Calendar.getInstance();
    SimpleDateFormat formater = new SimpleDateFormat("dd_MM_yyyy_hh_mm_ss");
    String methodName = result.getName();
    if(!result.isSuccess()){
        File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
        try {
            FileUtils.copyFile(scrFile, new File((String) PathConverter.convert("failure_screenshots/"+methodName+"_"+formater.format(calendar.getTime())+".png")));
        } catch (IOException e1) {
            e1.printStackTrace();
        }
    }
}

我可以将自己的屏幕截图包含在TestNG报告链接或图片中吗?如果是,怎么办?

我在网上发现的只是FEST框架。但是由于我已经在截屏了,所以我不想使用其他框架。


问题答案:

是的,您可以在testng报告中包含指向屏幕截图的链接。

您需要调用org.testng.Reporter.log方法以通过@Listeners({yourListener.class})注释您的测试类或所有测试类的父级,或将侦听器添加到您的中,从而将超链接写入testng报告testng.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="default">
  <listeners>
    <listener class-name="ScreenshotListener" />
  </listeners>
  <test name="Test">
    <packages>
      <package name="someTests.*"/>
    </packages>
  </test>
</suite>

您需要首先创建一个Listener类,并将其添加到testng中。您可以从testng.org获取详细信息。搜索监听器。

创建该类后,应在其中编写一个重写该ontestfailure方法的方法。每当testng识别出故障时,将执行此方法中的代码。

您可以调用屏幕快照获取方法,并用于Reporter.log将超链接放入该屏幕截图。然后,您可以在失败的测试用例详细信息下找到此链接。

import java.io.*;
import java.util.*;
import java.text.*;
import org.apache.commons.io.FileUtils;

import org.openqa.selenium.*;

import org.testng.*;

public class ScreenshotListener extends TestListenerAdapter {
    @Override
    public void onTestFailure(ITestResult result) {
        Calendar calendar = Calendar.getInstance();
        SimpleDateFormat formater = new SimpleDateFormat("dd_MM_yyyy_hh_mm_ss");
        String methodName = result.getName();
        if(!result.isSuccess()){
            File scrFile = ((TakesScreenshot)SomeStaticWebDriver.driver).getScreenshotAs(OutputType.FILE);
            try {
                String reportDirectory = new File(System.getProperty("user.dir")).getAbsolutePath() + "/target/surefire-reports";
                File destFile = new File((String) reportDirectory+"/failure_screenshots/"+methodName+"_"+formater.format(calendar.getTime())+".png");
                FileUtils.copyFile(scrFile, destFile);
                Reporter.log("<a href='"+ destFile.getAbsolutePath() + "'> <img src='"+ destFile.getAbsolutePath() + "' height='100' width='100'/> </a>");
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
}


 类似资料:
  • 问题内容: 目前,我正在以这种方式拍摄测试失败的屏幕截图: 我可以将自己的屏幕截图包含在TestNG报告链接或图片中吗?如果是,怎么办? 我在网上发现的只是FEST框架。但是由于我已经在截屏了,所以我不想使用其他框架。 问题答案: 是的,您可以在testng报告中包含指向屏幕截图的链接。 您需要通过使用@Listeners({yourListener.class})注释您的测试类或所有测试类的父级

  • 我在我的项目中使用cucumber版本4。我在我的项目中使用以下依赖项。 使用上述依赖关系,我能够生成“cucumberjvm报告”。 我还用java编写了代码,用于将屏幕截图附加到报告中,我只在场景失败时拍摄屏幕截图。 我不确定是否遗漏了什么,但屏幕截图没有附加到报告中。cucumber生成的默认html报告正在显示屏幕截图。 谁能帮我一下吗。谢谢

  • 我使用的框架是使用cucumber、selenium、testng和maven构建的。 Maven仅适用于依赖项。 Testng使用AbstractTestNG CucumberTests执行cucumber功能文件。 我还使用extentreports testng适配器实现了扩展报告。看看我提到的这个链接——http://extentreports.com/docs/versions/4/ja

  • 我使用的是扩展报告4。实际上,当测试失败时,我试图在扩展报告中添加屏幕截图。我使用下面的代码来实现这一点。截图会附在我的报告的结尾(请参考截图),但我希望截图在适当的步骤中附上,即当测试用例失败时。请帮助我解决方案或变通方法

  • 我正在尝试使用extent report构建selenium,但无法使用save screenshot函数,因为我无法引用ITestListener类中的WebDriver对象。下面是我的示例代码: 测试转轮。java: TestListener.java公共类TestListener实现ITestListener{ 问题: > 如何将WebDriver对象从TestRunner.java传递给T

  • 我无法看到截图被捕获在cucumber的程度报告。 我已经调试并观察到代码已经执行,但屏幕截图并没有保存在extent report或html report文件中。 截图代码 if(scenario.isFailed()){byte[]screenshot=seleniumitls.captureShot();scenario.public void screenshot(scenario sce