Цитирую ОП:
Например, при сбоях я хочу сделать скриншот перед закрытием браузера. В случае успеха я просто хочу закрыть браузер.
Теперь интересный вопрос будет заключаться в том, какую структуру вы используете для своих утверждений? Я предполагаю, что вы используете Junit, который поставляется в комплекте с JBehave, поскольку JBehave полагается на знание того, что JUnit выдает исключение, об ошибке.
Идея состоит в том, чтобы: а) выдать исключение при возникновении ошибки (поэтому нужно проверять каждый шаг) б) сделать снимок экрана в) продолжить тестирование (т.е. закрыть браузер)
Таким образом, чтобы создать исключение, вам действительно не нужно много делать, поскольку это делается автоматически при использовании оператора JUnit Assert.
так например
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"));
Надеюсь, вышеизложенное поможет!
person
Xwris Stoixeia
schedule
24.10.2018