Selenium Manager - łatwiejszy start z automatyzacją testów Selenium dzięki nowej funkcjonalności

Konfiguracja sterowników przeglądarek (ang. driver) w Selenium była przez wiele lat zadaniem, które użytkownicy musieli wykonywać manualnie lub z pomocą dodatkowcyh bibliotek, takich jak na przykład webdriver_manager w Python, czy WebDriverManager w Javie. Nie jest to proces skomplikowany, ale wraz z coraz krótszymi cyklami wydawania przeglądarek, zadanie utrzymania sterowników w zgodzie z wersją przeglądarki staje się coraz trudniejsze.

Selenium Manager to nowe narzędzie, które automatycznie zarządza sterownikami i pomaga w łatwym uruchomieniu Selenium. Selenium Manager skonfiguruje sterowniki dla przeglądarek Chrome, Firefox i Edge, jeśli nie są one dostępne w PATH. Narzędzie to jest dostępne od Selenium w wersji 4.6.

Aby uruchomić test Selenium z użyciem Selenium Manager, wystarczy zainstalować Chrome, Firefox lub Edge. Jeśli masz już zainstalowane sterowniki przeglądarki lub używasz menadżera sterowników, ta funkcja zostanie zignorowana.

Czytaj więcej ...

Błędny wynik testu czy błąd wykonania testu - jaka to różnica?

W arsenale przykładowych projektów, które wykorzystuję podczas szkoleń, mam projekt pytest-intro, który zawiera pięć bardzo prostych testów w trzech scenariuszach testowych. Ostatnio podczas zajęć na uczelni zorientowałem się, że jeden z testów zawiera nieprawidłowy kod, który w przypadku błędnego działania testowanego serwisu może doprowadzić do błędnego wykonania testu (test error) zamiast do błędnego wyniku testu (test failure). Czym to się różni? Dobrze jest uczyć się na błędach, a najlepiej na cudzych, więc spieszę opisać wspomniany przypadek ze szczegółami.

Czytaj więcej ...

Selenium 4 - Chrome DevTools Protocol

Chrome DevTools Protocol (CDP) dostarcza niskopoziomowy interfejs, który pozwala między innymi na inspekcję i kontrolę dokumentów, instrumentację przeglądarki, czy symulację interakcji użytkownika wykorzystywaną w automatyzacji. CDP dostarcza również możliwość nasłuchiwania na określone zdarzenia, takie jak zdarzenia sieciowe czy zdarzenia związane z logami w konsoli.

Wiele bibliotek i rozszerzeń wykorzystuje ten protokół do orkiestracji akcji w przeglądarkach Chromium, Chrome czy Edge. Do grona tych narzędzi należy również Selenium, które wraz z czwartym wydaniem wprowadziło wsparcie dla tego protokołu w sterownikach ChromeDriver, EdgeDriver, jak również FirefoxDriver.

Czytaj więcej ...

Selenium 4 - Basic Auth

Implementacja uwierzytelniania Basic Auth w testach automatycznych opartych o Selenium była zawsze możliwa, ale wymagała nieco gimnastyki. Selenium 4 wprowadziło ulepszony i prosty sposób na obsługę tego sposobu uwierzytelniania.

Czytaj więcej ...

Selenium Webdriver Manager dla projektów w Python - pierwsze kroki

WebDriver API jest protokołem definiującym niezależny od technologii interfejs do kontrolowania przeglądarek. Producenci popularnych przeglądarek często dostarczają własną implementację WebDriver API, nazywaną sterownikiem (ang. driver), która do komunikacji z przeglądarką używa API dostarczonego przez jej producenta. Przykładami takich sterowników są geckodriver dla Mozilla Firefox oraz chromedriver dla Google Chrome.

Manualne zarządzanie wersjami sterowników w projektach jest czasochłonne i podatne na błędy, dlatego też zalecam używanie narzędzi automatyzujących ten proces. Popularnym narzędziem wykorzystywanym w projektach opartych o technologię Python jest Webdriver Manager - biblioteka umożliwiająca automatyczne zarządzanie binariami sterowników wymaganymi przez Selenium WebDriver.

Czytaj więcej ...

Git - pierwsze kroki

System kontroli wersji to oprogramowanie, które służy do śledzenia zmian wprowadzanych w plikach, na przykład kodzie źródłowym aplikacji, a także wspierania łączenia zmian dokonanych przez wiele osób w różnym czasie, tak jak w przypadku pracy zespołu programistów nad jednym projektem. Git to darmowe oprogramowanie open source, rozproszony system kontroli wersji, który stał się de facto standardem w branży. Więcej można się o nim dowiedzieć ze strony projektu. Warto go znać i stosować w swoich projektach, dlatego w tym artykule pokażę kilka poleceń, które pozwolą na szybki i skuteczny start z tym narzędziem.

Czytaj więcej ...

JUnit 5 i Selenium - Testy powtarzane

Testy powtarzane (ang. repeated tests) pozwalają wykonywać ten sam przypadek testowy wielokrotnie i są szczególnie przydatne na przykład gdy chcemy zweryfikować, czy dla tych samych parametrów wejściowych system zwraca taki sam rezultat niezależnie od ilości wywołań.

W przykładzie wykorzystam mechanizm testów powtarzanych do stworzenia kilku zadań na liście, a następnie usunę te zadania za pomocą metody testowej, która zostanie wykonana jako ostatnia metoda w klasie testowej. Przykład ten wybiega poza klasyczne użycie testów powtarzanych, ale pozwoli na zademonstrowanie dodatkowych mechanizmów dostępnych w JUnit 5, takich jak zmiana cyklu życia klasy testowej oraz określenie kolejności wykonania metod testowych w klasie testowej.

Czytaj więcej ...

JUnit 5 i Selenium - klasa PageFactory z pakietu support biblioteki Selenium

Biblioteka Selenium dostarcza klasę PageFactory, która upraszcza implementację wzorca Page Object. Klasa PageFactory pozwala na utworzenie nowej instacji obiektu dowolnej klasy, która deklaruje pola typu WebElement lub List<WebElement> oznaczone adnotacją @FindBy lub posiadające nazwy takie jak atrubut id lub name elementu HTML na stronie. Skuteczność i prostotę tego rozwiązania pokażę na przykładzie testów aplikacji TodoMVC.

Czytaj więcej ...

JUnit 5 i Selenium - Optymalizacja konfiguracji i uruchomienia projektu

Większość projektów, w których automatyzowane są testy aplikacji internetowych, wymaga wykonywania skryptów z wykorzystaniem różnych przeglądarek. Manualne zarządzanie konfiguracją, wersjami sterowników przeglądarek i odpowiednim uruchomieniem testów jest czasochłonne i podatne na błędy, dlatego warto używać narzędzi automatyzujących ten proces. Mechanizmy biblioteki WebDriverManager oraz frameworku JUnit 5 umożliwiają testowanie na różnych przeglądarkach bez wprowadzania zmian w kodzie, dzięki automatycznemu dobieraniu odpowiedniego sterownika oraz wykorzystaniu zewnętrznej konfiguracji uruchamiania. Skuteczność tych rozwiązań pokażę modyfikując projekt testów aplikacji TodoMVC, w którym wsparcie dla różnych przeglądarek było jak do tej pory całkowicie manualne.

Czytaj więcej ...

Pytest - katalogi tymczasowe

Zdarza się, że test automatyczny potrzebuje tymczasowych struktur na dysku maszyny, na której jest wykonywany, na przykład katalogu na pliki zapisywane w trakcie pracy przez testowany program. Tego typu obiekty należy tworzyć w przemyślany sposób, żeby uniknąć niepotrzebnych zakłóceń wykonania testów, spowodowanych na przykład przez błędy pochodzące od systemu operacyjnego przy próbie utworzenia katalogu o nazwie, która już istnieje. Na szczęście język Python oraz framework Pytest posiadają mechanizmy, które bardzo takie zadanie ułatwiają.

Czytaj więcej ...