1、新建ScreenshotListener类,并实现IHookable接口
package com.aosschool.wechatmini.listener;
import cn.hutool.core.io.FileUtil;
import com.aosschool.wechatmini.common.BasePage;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.testng.IHookCallBack;
import org.testng.IHookable;
import org.testng.ITestResult;
import java.io.File;
/**
* @author: wuqi
* @date: Created in 2021 /6/8
* @description:
* @version:
*/
public class ScreenshotListener implements IHookable { //IHookable是一个接口类,所以要重写run方法
@Override
public void run( IHookCallBack iHookCallBack, ITestResult iTestResult) { //IHookCallBack iHookCallBack, ITestResult iTestResult看成是new对象
iHookCallBack.runTestMethod( iTestResult) ;
if ( iTestResult.getThrowable( ) != null) {
Object object = iTestResult.getInstance( ) ;
BasePage basePage = ( BasePage) object; //case对象强转成父类BaseCase,向上转型
TakesScreenshot Screenshot = basePage.androidDriver;
File screenshotAs = Screenshot.getScreenshotAs( OutputType.FILE) ;
File file = new File( "src\\ main\\ resources" +System.currentTimeMillis( ) +".jpg" ) ; //图片保存位置
FileUtil.copyFile( screenshotAs,file) ;
}
}
}
2、testng.xml添加listener地址
< ?xml version = "1.0" encoding = "UTF-8" ?>
< ! DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
< suite name = "xxx小程序" >
< listeners>
< listener class-name= "com.aosschool.wechatmini.listener.ScreenshotListener" > < /listener>
< /listeners>
< test name = "精选题500" >
< classes>
< class name = "com.aosschool.wechatmini.cases.xueche.ShunXuLianxiCase" >
< /class>
< /classes>
< /test>
< /suite>