После выполнения автоматического теста на Selenium необходимо проанализировать результаты, а если тест оказался провален, то нужно еще и понять причину. Для нахождения ошибки при выполнении теста можно пользоваться записями в логе. Но иногда записей бывает недостаточно И вообще, лучше один раз увидеть, чем сто раз… прочитать лог.
Для того, чтобы снять скриншот экрана, у Selenium есть метод getScreenshotAs. Снятый скриншот помещается во временный файл в формате .png. Нужно скопировать этот временный файл куда-нибудь, чтобы его сохранить, иначе он будет автоматически удален после окончания выполнения тестов.
Итак, с сохранением скриншота все довольно просто. Но как сделать так, чтобы скриншот сохранялся только при неуспешном выполнении теста?
Для этого нужно воспользоваться возможностями фреймворка TestNG, а именно аннотацией @AfterMethod. Метод с такой аннотацией будет запускаться всегда после выполнения каждого тестового метода (для аннотации нужно обязательно указать alwaysRun = true). Далее нужно проверить результат выполнения теста ITestResult, и если результат неуспешный, то делаем скриншот.
В результате получаем:
Для того, чтобы снять скриншот экрана, у Selenium есть метод getScreenshotAs. Снятый скриншот помещается во временный файл в формате .png. Нужно скопировать этот временный файл куда-нибудь, чтобы его сохранить, иначе он будет автоматически удален после окончания выполнения тестов.
File scrFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
FileUtils.copyFile(scrFile, new File("C:/Work/screenshot.png"));
Итак, с сохранением скриншота все довольно просто. Но как сделать так, чтобы скриншот сохранялся только при неуспешном выполнении теста?
Для этого нужно воспользоваться возможностями фреймворка TestNG, а именно аннотацией @AfterMethod. Метод с такой аннотацией будет запускаться всегда после выполнения каждого тестового метода (для аннотации нужно обязательно указать alwaysRun = true). Далее нужно проверить результат выполнения теста ITestResult, и если результат неуспешный, то делаем скриншот.
В результате получаем:
@AfterMethod(alwaysRun = true)
public void takeScreenshot(ITestResult result) {
if (! result.isSuccess()) {
File scrFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
try {
String scrFilePath = "C:/Work/screenshot.png";
FileUtils.copyFile(scrFile, new File(scrFilePath));
log.log(Level.SEVERE, "<a href='file:///" + scrFilePath + "'>"+ result.getMethod().getMethodName()</a>");
} catch (IOException ex) {
log.log(Level.SEVERE, null, ex);
}
}
}
Комментариев нет:
Отправить комментарий