Tar*_*ken 5 java testng selenium webdriver selenium-webdriver
目前我以这种方式截取我的测试失败的截图:
@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框架.但由于我已经截取屏幕截图,我不想使用另一个框架.
A.J*_*A.J 15
是的,您可以在testng报告中包含指向您的屏幕截图的链接.
您需要调用org.testng.Reporter.log方法将超链接写入testng报告,方法是使用@Listeners({yourListener.class})注释您的测试类或所有测试类的父级,或者将监听器添加到您的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();
            }
        }
    }
}
| 归档时间: | 
 | 
| 查看次数: | 19774 次 | 
| 最近记录: |