我目前正在通过分别覆盖 TestListenerAdapter 方法 onTestFailure 和 onTestSuccess 来捕获 TestNG 中失败和成功的屏幕截图。为此,您需要指定要截取屏幕截图的驱动程序。
我的问题:在方法级别并行运行测试时,是否有一种捕获屏幕截图的好方法?
为了并行运行测试,每个单独的测试都需要一个唯一的驱动程序实例。因此,在任何给定时间,您都会运行 x 个驱动程序实例。当需要捕获屏幕截图时,您如何确定要使用哪个驱动程序?
代码摘录如下:
public class OnFailureListener extends TestListenerAdapter {
@Override
public void onTestFailure(ITestResult tr) {
Screenshots.captureScreenshot(tr);
super.onTestFailure(tr);
}
--
public static void captureScreenshot(ITestResult tr) {
WebDriver driver = TestClass.driver;
if (driver instanceof TakesScreenshot) {
String filename = "path/to/screenshot/file";
try {
File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(scrFile, new File(filename));
} catch (IOException e) { e.printStackTrace(); }
}