我正在使用ExtentReports和ItestListener为我的testng-selenium-java项目工作,
我的监听器会为ExtentReports拍摄失败的测试用例截图,但问题是我在testng.XML中有多个类,并且我一次运行它们,一个接一个地做不同的事情并拥有自己的驱动程序。
在失败的情况下,Ilistener的代码如下:
public void onTestFailure(ITestResult iTestResult)
{
System.out.println("I am in onTestFailure method " +
getTestMethodName(iTestResult) + " failed");
//Get driver from BaseTest and assign to local webdriver variable.
Object testClass = iTestResult.getInstance();
WebDriver webDriver = ((BaseTest) testClass).getDriver();
//Take base64Screenshot screenshot.
String base64Screenshot = "data:image/png;base64,"+((TakesScreenshot)webDriver).
getScreenshotAs(OutputType.BASE64);
//Extentreports log and screenshot operations for failed tests.
ExtentTestManager.getTest().log(LogStatus.FAIL,"Test Failed",
ExtentTestManager.getTest().addBase64ScreenShot(base64Screenshot));
}
如何确保在测试用例失败时,驱动程序会使用已失败测试用例类的驱动程序,因为在上述代码中,每次只给出一个类的驱动程序,而不是当前类的驱动程序。