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:
Dlaczego w kodzie począwszy od tej strony kursu do końca "BasePage" znajduje się w "package TestyPOM", zamiast "package PageObjects"?
Halko! Zakładam, że pomieszałam w trakcie kopio [...] Całość odpowiedzi widoczna dla kursantów.
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?
Nie omawiam trybu headless, bo to jest po prostu p [...] Całość odpowiedzi widoczna dla kursantów.