Zrzut ekranu z Selenium WebDriver

Cześć,

dość często jesteśmy w sytuacji, gdy w przypadku błędu aplikacji, chcemy wykonać zrzut ekranu z poziomu naszych testów automatycznych.

W moich skryptach, poza Selenium WebDriverem, korzystałam również z TestNG i taka funkcjonalność była realizowana następująco:

@AfterMethod
 public void captureScreenshotOnFailure(ITestResult testResult) {
     if (!testResult.isSuccess()) {
         takeScreenshot();
     }
     cleanUp();
 }

Metoda ta korzysta z anotacji TestNG @AfterMethod, która zapewnia uruchomienie po każdej metodzie testowej.

W przypadku weryfikacji, że rezultat testu nie zakończy się pozytywnie wykonywany jest screen:

private void takeScreenshot() {
     String filename = Paths.get(SCREENSHOT_PATH, currentTimestamp + ".jpg").toString();
     try {
         File scrFile = ((TakesScreenshot) driver).getScreenshotAs(OutputType.FILE);
         FileUtils.copyFile(scrFile, new File(filename));
     } catch (IOException e) {
         Throwables.propagate(e);
     }
 }

Zrzuty ekranu zapisywałam do folderu o ścieżce zapisanej w propertiesach. Do każdego pliku ze zrzutem dodawałam aktualny timestamp tworzony podczas inicjowania testu:

@BeforeMethod
 public void openPage() {
     currentTimestamp = LocalDateTime.now().format(DateTimeFormatter.ofPattern("yyyyMMddHHmmss"));
     driver.get(PAGE_ADDRESS);
 }

Mam nadzieję, że ten post okaże się dla kogoś przydatny.

Do kolejnego posta!

 

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *