2

我正在尝试为失败方法截取屏幕截图,并且还想将其放入我的报告中,我可以截取屏幕截图但无法在 HTML 报告中显示相同的内容。以下是我的代码,朋友们对此有什么线索吗?

public class SB1 {
    private static  Logger logger = Logger.getLogger(SB1.class);
    WebDriver driver = new FirefoxDriver();

@Test
public void Testone() {

    driver.get("http://www.google.com/");

    assert false;




}


public void catchExceptions(ITestResult result) {
    System.out.println("result" + result);
    String methodName = result.getName();
    System.out.println(methodName);

    if (!result.isSuccess()) {

        try {

        String failureImageFileName =  new SimpleDateFormat("MM-dd-yyyy_HH-ss").format(new GregorianCalendar().getTime())+ ".png"; 
        File scrFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
        FileUtils.copyFile(scrFile, new File(failureImageFileName)); 

            String userDirector = System.getProperty("user.dir") + "/"; 
            Reporter.log("<a href=\""+ userDirector + failureImageFileName +"\"><img src=\"file:///" + userDirector 
                         + failureImageFileName + "\" alt=\"\""+ "height='100' width='100'/> "+"<br />"); 
            Reporter.setCurrentTestResult(null); 

        } catch (IOException e1) {
            e1.printStackTrace();
        }
}
4

3 回答 3

4

您是否将 ESCAPE_PROPERTY 设置为 false?如果您想要报告发布屏幕截图,这就是您必须做的 -

    private static final String ESCAPE_PROPERTY = "org.uncommons.reportng.escape-output";

并在您的设置中-

    System.setProperty(ESCAPE_PROPERTY, "false");
于 2013-03-27T18:59:50.160 回答
0

我试过这个。似乎如果您将系统属性设置为 false,它会从整个日志中删除转义...据我所知,报告是在测试后生成的,无论系统属性当时设置为什么。我想插入屏幕截图(与上面的代码一起使用),但我不想删除其他格式(br 标签)。

于 2014-01-29T20:28:29.247 回答
0

您可以使用以下代码。

Reporter.log("<br>Chrome driver launched for ClassOne</br>");

或者您可以使用自定义方法,您不需要每次都附加 br 标签,使用以下自定义方法。

public void customLogReport(String testCaseDescription) throws Exception{ try{ Reporter.log("<br>" + testCaseDescription + "</br>"); }catch(Exception e){ e.printStackTrace(); } }

于 2016-07-27T15:07:07.377 回答