Zapisy otwarte! Dołącz do kursu Selenium w Javie lub Selenium w C#. Tylko do 23.09.2021 do godz. 21:00. Zapisz się tutaj.

Kropka w XPath – a komu to potrzebne?

Z selektorami XPath i CSS to jest tak, że można się w tym doktoryzować. Niby już były artykuły o selektorach XPath ale wciąż przychodzi mi coś nowego do głowy o czym warto powiedzieć. Dzisiaj opowiem o jednej śmiesznostce, która zatrzymała na chwilę robotę na szkoleniu. Prowadziłam je wraz z Grzegorzem (piona!). Zapraszam do szalenie fascynującej i pełnej zwrotów akcji opowieści o kropce w selektorach XPath.

Szkolenie, czyli jak się zaczęło

Szkolenie, o którym mowa odbyło się na przełomie sierpnia i września 2018 roku. Trwało siedem tygodni, a spotykaliśmy się razem raz w tygodniu po trzy godziny. Materiał był dosyć szeroki – chcieliśmy pokazać nie tylko jak działa Selenium ale też jak zbudować framework i pokazać przykład przygotowania środowisk testowych. Każdy miał wybór co do selektorów jakie będzie używał w teście i kilka osób naturalnie wybrało XPath.  XPath ma naprawdę duże możliwości i jest absolutnie wystarczający w testach. W selektorach css muszę się czasem pokornie zwracać w kierunku XPatha, żeby coś odnaleźć po tekście.

Szukanie elementu w elemencie

Na jednym ze spotkań przerabialiśmy zastosowanie poniższej konstrukcji:

driver.findElement(_metoda_lokalizująca)).findElement(_inna_metoda_lokalizująca));

To co się dzieje w kodzie powyżej, to szukamy jakiegoś elementu a później w kontekście tego elementu szukamy innego. Czyli na przykład szukamy jakiegoś kontenera a dopiero potem nawigujemy się do jego elementów.

No i okazało się, że kilka osób używając XPatha miało z tym problem – kod nie zachowywał się tak jak oczekiwaliśmy. Problem był trywialny ale wtedy trochę trudniejszy do złapania, bo iterowaliśmy się po elementach listy i w ogóle ten kod nie był taki znowu najprostszy. W każdym razie pętla nie leciała po elementach prawidłowo.

Zobaczcie w poniższym filmie co trzeba było zrobić, gdzie ta kropka powinna się znaleźć i co ona w ogóle robi.

Dwie uwagi zanim się zabierzecie do filmu. Pierwsza jest taka, że w mojej opinii konstrukcja służąca do szukania elementu w elemencie jest mało elastyczna i może być problematyczna. Ponadto, nie widzę wyraźnej korzyści z jej stosowania, a może nam znacznie skomplikować budowę frameworka testowego. Mi się nie zdarzyło, żebym musiała czegoś takiego użyć, spokojnie wszystko zawsze namierzałam jednym bezpośrednim lokatorem. Druga uwaga dotyczy lokalizowania elementu po tekście w XPathie, której używam na filmie. Tego sposobu na zlokalizowanie elementu użyłam tutaj jako przykładu, ale… normalnie nie polecam. Używanie tego mechanizmu to nienajlepsza praktyka – taki XPath jest mało odporny na zmiany – tekst się może łatwo zmienić. Po drugie, będzie to też sprawiało problem w przypadku testowania kilku wersji językowych.

Więcej o tym jak budować XPathy do znalezienia elementów na stronie znajdziesz w artykule:

>> Selektory w Selenium – XPath

Jeżeli chcesz naprawdę dobrze zrozumieć jak XPath działa i poćwiczyć ich budowanie na zadaniach, koniecznie sprawdź kurs XPatha dla testerów:

>> XPath dla testerów

Dodaj komentarz: