在@Test
失败时捕获屏幕截图的典型解决方案,但在@Before/After
Class/Method
失败可能吗?
为什么我需要那个? - 特别是@BeforeMethod
,我会在测试类中使用通用逻辑 - 登录并转到特定页面。
答案 0 :(得分:1)
你可能想尝试实现WebDriverEventListener
,你可能对方法onException
感兴趣,这将允许你对代码执行期间发生的每个异常做smthn,也就是'有必要使用EventFiringWebDriver
添加监听器
答案 1 :(得分:0)
目前停止覆盖TestNG ITestListener
- onTestSkipped
方法。缺点是每个跳过的@Test
方法都有截图。当然,下面的代码应该重构,但这是一个很好的开始。注意:您应该将此自定义侦听器包含在testng.xml
@Override
public void onTestSkipped(ITestResult result) {
if(result != null){
String failedTestScreenshotFolder = Paths.get("").toAbsolutePath().toString() + "path/skippedScreenshots/";
WebDriver webDriver = ((TestBase)result.getInstance()).webDriver;
File scrFile = ((TakesScreenshot)webDriver).getScreenshotAs(OutputType.FILE);
try {
String className = result.getTestClass().getName();
FileUtils.copyFile(scrFile, new File(failedTestScreenshotFolder + className.substring(className.lastIndexOf(".") + 1) + "." + result.getMethod().getMethodName() + ".jpg"));
} catch (IOException e) {
e.printStackTrace();
}
}
}