您好,我正在使用 selelium 和 spock 编写冒烟测试,我想在测试失败时截屏。试试这个:
public class ScreenshotTestRule implements MethodRule {
public Statement apply(final Statement statement, final FrameworkMethod frameworkMethod, final Object o) {
return new Statement() {
@Override
public void evaluate() throws Throwable {
try {
statement.evaluate()
} catch (Throwable t) {
captureScreenshot(frameworkMethod.getName().replaceAll(" ", "-"))
throw t
}
}
public void captureScreenshot(String fileName) {
try {
new File("target/surefire-reports/").mkdirs()
File screenshot = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE)
Files.copy(screenshot, new File("/target/surefire-reports/"+fileName+".png"))
} catch (Exception e) {
print "Error while creating screenshot " + fileName
throw new RuntimeException(e)
}
}
}
}
}
但我收到此错误:
java.lang.RuntimeException: groovy.lang.MissingFieldException: No such field: driver for class: lt.inventi.apollo.system.test.SmokeTest$ScreenshotTestRule