W tej lekcji kolejne zadanie z POM: przepisanie testu płatności dla użytkownika, który nie ma i nie chce zakładać konta. Mimo tego, że do przepisania jest tylko jeden test, to będzie sporo do zrobienia – stworzymy nowe klasy PageObject oraz przepiszemy jedną dużą metodę z mnóstwem parametrów na kilka mniejszych, co zwiększy czytelność naszego kodu.
Na początku filmu tłumaczę polecenie, a następnie rozwiązanie. Będzie moment, żeby zatrzymać film na czas wykonania zadania – dam znać w filmie kiedy.
Uwaga: plik z projektem testowym, na którym pracujemy w lekcjach dotyczących POM wymaga uzyskania dostępu. Dostaniesz go tutaj.
Twoje klasy po tym zadaniu powinny wyglądać jak poniżej
Lepiej nie podglądać przed rozwiązaniem zadania ⚠️
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
Lista lekcji dotyczących Page Object Model:
Czesc, szybkie pytanko,
Czy skoro klasa BasePage jest abstrakcyjna, to dlaczego BaseTest nie jest abstrakcyjna ?
Wydaje mi się, że ich ogólne zastosowanie jest niemal identyczne, więc nic nie stoi na przeszkodzie, aby BaseTest również była abstrakcyjna, popraw mnie proszę jeżeli się myle.
Pozdrawiam
Słuszna uwaga, tak, BaseTest również może, a n [...] CAŁOŚĆ KOMENTARZA WIDOCZNA DLA SUBSKRYBENTÓW.
Hejo 🙂 Mam pytanie do metody "chooseCountry". Zrobiłam ją w trochę inny sposób i chciałam zapytać, czy takie rozwiązanie jest OK, albo czy jest w jakiś sposób "ułomne" z punktu widzenia dobrych testów. 😉
Wydaje mi się, że Twoje rozwiązanie bardziej naśladuje kroki człowieka, klika się "fizycznie" w strzałkę do rozwinięcia listy, a u mnie wybiera się od razu element i przez to moje rozwiązanie nie jest do końca poprawne?
private By countrySelectionDropdownLocator = By.id("billing_country");
public CheckoutPage chooseCountry(String countryCode) {
WebElement countrySelectionDropdown = driver.findElement(countrySelectionDropdownLocator);
Select country = new Select(countrySelectionDropdown);
country.selectByValue(countryCode);
return this;
}
Halko! Jeżeli działa to nie widzę tutaj nic pod [...] CAŁOŚĆ KOMENTARZA WIDOCZNA DLA SUBSKRYBENTÓW.
Dzięki za odpowiedź. 🙂
Zadziałało z kopa! 😀