您的位置:首页 > 其它

Webdriver+Testng实现测试用例失败自动截图功能

2017-12-08 17:22 519 查看
testng执行测试用例的时候,如果用例执行失败会自动截图,方便后续排查问题

1.首先定义一个截图类:

package com.rrx.utils;

import java.io.File;
import java.io.IOException;
import java.util.Date;

import org.apache.commons.io.FileUtils;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;

public class ScreenShort {
public WebDriver driver;

public ScreenShort(WebDriver driver) {
this.driver = driver;
}

public void takeScreenshot(String screenPath){
try {
File scrFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(scrFile, new File(screenPath));
} catch (IOException e) {
System.out.println("Screen shot error: " + screenPath);
}

}

public void takeScreenshot(){
String screenName=String.valueOf(new Date().getTime()+".jpg");
File file=new File("C://Users//Administrator//workspace//Selenium"+File.separator+"test-output");
//System.out.println(File.separator);//就是一个/
if (!file.exists())
file.mkdirs();

String screenPath = file.getAbsolutePath() + "\\" + screenName;
this.takeScreenshot(screenPath); 
}
}

2.实现testng的listener接口并重写OnTestFailure方法

package com.rrx.utils;

import org.testng.ITestResult;
import org.testng.TestListenerAdapter;

public class Listener extends TestListenerAdapter {
@Override
public void onTestFailure(ITestResult tr){

try {
ScreenShort sc=new ScreenShort(DriverFactory.getDriver());
sc.takeScreenshot();

} catch (SecurityException e) {
e.printStackTrace();
} catch (IllegalArgumentException e) {
e.printStackTrace();
}
}
}

3.加上监听

@Listeners
({ DotTestListener.
class
 
})


或者直接在testNG配置文件中添加

<listeners>
<listener class-name="com.rrx.utils.Listener" />
</listeners>
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: