Цитирование OP:
Например, для сбоев я хочу сделать скриншот перед закрытием браузера.В случае успеха я просто хочу закрыть браузер.
Теперь интересным вопросом будет, какой фреймворк вы используете для своих утверждений?Я предполагаю, что вы используете Junit, поставляемый в комплекте с JBehave, так как JBehave полагается на то, что существует ошибка, вызванная исключением JUnit.
Идея состоит в том, чтобы: a) вызвать исключение при возникновении ошибки (поэтому необходимо проверять каждый шаг) b) сделать снимок экрана c) продолжить тестирование (т.е. закрыть браузер)
Таким образом, чтобы создать исключение, вам действительно не нужно ничего делать, поскольку это делается автоматически при использовании оператора Assert в JUnit.
, например,
Assert(username.equals("expected_user").isTrue();
Если вышеприведенное не удаетсяисключение будет брошено.Вы можете сделать это следующим образом:
public class RunnerExtension implements AfterTestExecutionCallback {
@Override
public void afterTestExecution(ExtensionContext context) throws Exception {
Boolean testResult = context.getExecutionException().isPresent();
System.out.println(testResult); //false - SUCCESS, true - FAILED
}
}
@ExtendWith(RunnerExtension.class)
public abstract class Tests {
}
Получено из этого ответа: JUnit5 - Как получить результат теста в AfterTestExecutionCallback
Таким образом, в основном вы переопределяете стандартное поведение -после - каждое утверждение было выполнено.В приведенном выше случае вы можете добавить (когда выдается исключение -> сделать снимок экрана).
Вот код снимка экрана для Selenium-Java:
WebDriver driver = new FirefoxDriver();
driver.get("http://www.google.com/");
File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
// Now you can do whatever you need to do with it, for example copy somewhere
FileUtils.copyFile(scrFile, new File("c:\\tmp\\screenshot.png"));
Надеюсь, что вышепомогает!