我与测试(使用Selenium,TestNG的,JAVA)具有以下结构的类调用方法(以截图):硒:如何从另一个类
public class loggedTest {
@Test
@Test
@AfterMethod
public void tearDown(messages screen, ITestResult result) {
screen.screenshot(result);
}
在AfterMethod我想制作一个屏幕画面,如果测试失败。 下面是这个方法在一个单独的类进行截图:
public class messages {
public void screenshot(ITestResult result) {
//driver = new ChromeDriver();
if (ITestResult.FAILURE == result.getStatus()) {
try {
TakesScreenshot ts = (TakesScreenshot) driver;
File source = ts.getScreenshotAs(OutputType.FILE);
Date date = new Date();
FileUtils.copyFile(source, new File("./Screenshots/" + result.getInstanceName() + "." + result.getName() + "." + date + ".png"));
System.out.println("Screenshot taken");
} catch (Exception e) {
System.out.println("Exception while taking screenshot " + e.getMessage());
}
}
}
}
我运行测试,但它不工作,如果这种方法在其他类。
但它正在如果我把它直接进入@AfterMethod注释,像:
@AfterMethod
public void tearDown(ITestResult result) {
if (ITestResult.FAILURE == result.getStatus()) {
try {
TakesScreenshot ts = (TakesScreenshot) driver;
File source = ts.getScreenshotAs(OutputType.FILE);
Date date = new Date();
FileUtils.copyFile(source, new File("./Screenshots/" + result.getInstanceName() + "." + result.getName() + "." + date + ".png"));
System.out.println("Screenshot taken");
} catch (Exception e) {
System.out.println("Exception while taking screenshot " + e.getMessage());
}
}
}
如果这里的问题? 谢谢
我能想到的唯一嫌疑犯,你'messages'类是否知道'driver'是什么? – nullpointer
如果问题得到解决,请更新线程。 – nullpointer