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
Klasa testowa: CartTests
Klasa testowa: BaseTest
Klasa Page Object: CheckoutPage
Klasa Page Object: CartPage
Klasa Page Object: ProductPage
Klasa Page Object: CategoryPage
Klasa Page Object: BasePage
Klasa Page Object: DemoFooterPage (czyli nasza stopka w POM)
Klasa Page Object: HeaderPage
Klasa Page Object: OrderReceivedPage
Klasa: DriverFactory
Enum: Browser
Lista lekcji dotyczących Page Object Model:
Komentarze
Nie masz aktywnej subskrypcji. Wykup subskrypcję albo zaloguj się, by móc komentować.