Selenium 82. Page Object Model: DriverFactory

Interesuje Cię ten kurs?

Dołącz do listy mailingowej, a poinformuję Cię o otwarciu zapisów.

Po fali zadań z obszaru Page Object Model, czas na coś nowego. W tej lekcji pokażę Wam jak zbudować klasę DriverFactory. Obiektu tej klasy będziemy używać, do tworzenia drivera o różnej konfiguracji w zależności od parametru.

Uwaga: plik z projektem testowym, na którym pracujemy w lekcjach dotyczących POM wymaga uzyskania dostępu. Dostaniesz go tutaj.

W filmie wspominam o lekcji dotyczącej inicjalizowania RemoteWebDrivera oraz lekcji dotyczącej Selenium Grid. Jeżeli nie wszystko w bieżącej lekcji wydaje Ci się zrozumiałe, być może warto wrócić właśnie do tych dwóch tematów.

Odniosę się jeszcze do tego jak wygląda klasa BaseTest po wprowadzeniu nowej klasy i zmian z nią związanych. Metoda testSetUp(), która jest oznaczona jako BeforeEach może nam rzucić teraz wyjątkiem. Jest to konsekwencją tego, jak stworzona jest metoda create() w klasie DriverFactory. Zwykle unikam rzucania wyjątkami w testach używając bloku try catch. Robię to dlatego, że jeżeli wyjątek zostanie rzucony w teście, to wykonanie kodu się zatrzyma i nie wykona się np. metoda oznaczona jako AfterEach, czyli np. nie „ubijemy” drivera i przeglądarka się nie zamknie, zostawiając nam bałagan.

W metodzie testSetUp() pozwalamy jednak na rzucenie wyjątku. Robimy tak dlatego, że jeżeli na tym etapie, czyli na etapie tworzenia drivera, coś pójdzie nie tak (konkretnie chodzi o jakiś błąd w adresie URL, który podajemy jako parametr tworząc obiekt RemoteWebDriver) i wykonanie kodu się zatrzyma, to w przypadku naszych testów nic nie musimy sprzątać. Nie ma przeglądarki do ubicia i w AfterEach nie robimy nic, co powinno zostać wykonane po teście, który nam nie odpali przeglądarki. Weź pod uwagę, że jeżeli w swoich testach będziesz chcieć wykonać akcje w AfterEach, to taki wyjątek musisz przechwycić i obsłużyć.

Zaktualizowane klasy

Klasa testowa: PaymentsTests

Ukryta treść

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

Klasa testowa: CartTests

Ukryta treść

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

Klasa testowa: BaseTest

Ukryta treść

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

Klasa Page Object: CheckoutPage

Ukryta treść

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

Klasa Page Object: CartPage

Ukryta treść

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

Klasa Page Object: ProductPage

Ukryta treść

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

Klasa Page Object: CategoryPage

Ukryta treść

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

Klasa Page Object: BasePage

Ukryta treść

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

Klasa Page Object: DemoFooterPage (czyli nasza stopka w POM)

Ukryta treść

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

Klasa Page Object: HeaderPage

Ukryta treść

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

Klasa Page Object: OrderReceivedPage

Ukryta treść

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

Klasa: DriverFactory

Ukryta treść

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

Enum: Browser

Ukryta treść

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

Lista lekcji dotyczących Page Object Model:

Wsparcie merytoryczne

Nie masz aktywnego członkostwa. Wykup dostęp albo Zaloguj się, by móc zadawać pytania.

  1. Dlaczego w kodzie począwszy od tej strony kursu do końca "BasePage" znajduje się w "package TestyPOM", zamiast "package PageObjects"?

    Odpowiedz
  2. Cześć,
    przy okazji tej lekcji mam pytanie o ChromeOptions. Nie zauważyłem żebyś omawiała w kursie użycie trybu headless lub incognito. Nie jest to trudne do nauczenia i źródła są w internecie. Zastanawiam się tylko czy uważasz temat tych trybów za mało ważny? Czy w realnej pracy testuje się w trybie headless? Z tego co kojarzę to testy w tym trybie są szybsze, ale nie można zrobić screenshota i nie symulują tak dobrze działania strony, więc może to zła praktyka i dlatego nie pokazujesz nawet jak używać tryb headless?

    Odpowiedz