Zapisanie strony PDF w Selenium 4

Interesuje Cię ten kurs?

Zapisz się na listę, a wyślę Ci szczegóły i informację jak dołączyć 👇 

W Selenium 4 możemy w bardzo łatwy sposób zapisać stronę w pliku PDF w dowolnym momencie testu. W tej lekcji zobaczysz jak to można zrobić.

Uwaga: ta funkcjonalność działa tylko dla przeglądarek opartych o Chromium (Chrome, Edge) w trybie headless.

Wspomniany tryb headless to uruchomienie przeglądarki bez interfejsu graficznego. Nie zobaczymy zatem strony wyświetlonej na monitorze, ale przeglądarka wygeneruje i obsłuży HTML.

Java

Ponieważ ta funkcjonalność zadziała tylko w trybie headless, musimy przekazać argument “–headless”.

Ukryta treść

Nie masz dostępu do tego kursu. Wykup dostęp albo zaloguj się, by móc zobaczyć pełną lekcję.

Następnie musimy pobrać zawartość strony, którą zapiszemy w PDFie. W tym celu użyjemy metody print(), która w parametrze przyjmuje PrintOptions (o tym trochę więcej za chwilę). Następnie metodą getContent() pobieramy zawartość w postaci Stringa.

Ukryta treść

Nie masz dostępu do tego kursu. Wykup dostęp albo zaloguj się, by móc zobaczyć pełną lekcję.

Teraz potrzebujemy jeszcze tę zawartość zapisać do pliku. Zrobię to korzystając z klasy FIleOutputStream (klasa z java.io, nie z Selenium). Musimy podać pełną ścieżkę do tworzonego pliku. W moim przypadku będzie to D:\test.pdf. Ponieważ zarówno metody z klasy FileOutputStream, których używamy, jak i sam konstruktor może rzucić wyjątkiem, musimy albo dodać “throws IOException”, albo (lepiej) obsłużyć ten wyjątek.

Ukryta treść

Nie masz dostępu do tego kursu. Wykup dostęp albo zaloguj się, by móc zobaczyć pełną lekcję.

Efektem działania powyższego kodu będzie plik PDF wygenerowany w podanej przez nas lokalizacji z zapisaną stroną.

W naszym przykładzie nie korzystaliśmy tak naprawdę z PrintOptions. Użyliśmy tego jako “zaślepki”, którą potrzebujemy przekazać jako arument w metodzie print(). W rzeczywistości PrintOptions pozwalają na zmianę ustawień generowanego PDFa. Albo pozwalałyby… gdyby działały. Problem zgłosiłam, w odpowiedzi dostałam informację, że to problem z driverem i trzeba czekać aż naprawią. Niemniej gdy zaczną działać, możesz się nimi pobawić. Przykładowe użycie znajdziesz poniżej: jest to próba ustawienia orientacji na poziomą.

Ukryta treść

Nie masz dostępu do tego kursu. Wykup dostęp albo zaloguj się, by móc zobaczyć pełną lekcję.

A poniżej zobaczysz jeszcze pełną klasę testową.

Ukryta treść

Nie masz dostępu do tego kursu. Wykup dostęp albo zaloguj się, by móc zobaczyć pełną lekcję.

C#

Ponieważ ta funkcjonalność zadziała tylko w trybie headless, musimy przekazać argument “–headless”.

Ukryta treść

Nie masz dostępu do tego kursu. Wykup dostęp albo zaloguj się, by móc zobaczyć pełną lekcję.

Następnie musimy pobrać zawartość strony, którą zapiszemy w PDFie. W tym celu użyjemy metody Print(), która w parametrze przyjmuje PrintOptions (o tym trochę więcej za chwilę). Następnie metodą SaveAsFile() zapisujemy zawartość do pliku. W parametrze musimy podac pełną ścieżkę do nowotworzonego pliku.

Ukryta treść

Nie masz dostępu do tego kursu. Wykup dostęp albo zaloguj się, by móc zobaczyć pełną lekcję.

Efektem działania powyższego kodu będzie plik PDF wygenerowany w podanej przez nas lokalizacji z zapisaną stroną.

W naszym przykładzie nie korzystaliśmy tak naprawdę z PrintOptions. Użyliśmy tego jako “zaślepki”, którą potrzebujemy przekazać jako arument w metodzie Print(). W rzeczywistości PrintOptions pozwalają na zmianę ustawień generowanego PDFa. Możemy na przykład zmienić orientację PDFa na poziomą i przeskalować dokument (pomniejszyć albo powiększyć wydruk). Taki przykład zobaczysz poniżej.

Ukryta treść

Nie masz dostępu do tego kursu. Wykup dostęp albo zaloguj się, by móc zobaczyć pełną lekcję.

A tutaj jeszcze cała klasa testowa.

Ukryta treść

Nie masz dostępu do tego kursu. Wykup dostęp albo zaloguj się, by móc zobaczyć pełną lekcję.