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.

XPath 3. Fragment atrybutu i szukanie po tekście

Dzisiaj poruszymy dwa tematy. Pierwszy z nich to posługiwanie się tylko fragmentem wartości atrybutu do wyszukania elementu. Drugi z nich to powód, dla którego chyba najczęściej sięgamy do XPatha nawet, jeżeli na co dzień go nie używamy, czyli szukanie po tekście elementu.

Konsola deweloperska i znaczniki

Jeżeli nie znasz konsoli deweloperskiej i nie wiesz czym są znaczniki HTML, zacznij od tej lekcji: Znaczniki i konsola deweloperska. Jeżeli jesteś tutaj z kursu Selenium w C#, to najpewniej masz ją już za sobą 😉

Przewodnik po selektorach CSS i XPath

Przy lekcjach dotyczących selektorów CSS i XPatha, a już szczególnie przy zadaniach, pomocny się może okazać przewodnik po selektorach CSS i XPath.

>> Dostaniesz go tutaj

Fragment wartości atrybutu i szukanie po tekście: linki i materiały

W XPathie mamy możliwość wyszukiwania po fragmencie wartości atrybutów. Możemy się posłużyć jedną z dwóch funkcji: contains() albo starts-with(). Same nazwy już dużo mówią o tym, czemu te metody będą służyły. Pierwsza służy do podania warunku dotyczącego tego, że któryś z atrybutów elementu ma zawierać jakiś ciąg znaków, a druga mówi o tym, że wartość danego atrybutu ma się zaczynać jakimś ciągiem znaków.

Ukryta treść

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

W powyższym przykładzie pierwszy XPath znajdzie wszystkie elementy, których klasa zawiera product, a drugi XPath zaznaczy wszystkie elementy, których klasa zaczyna się od product. Klasa jest tylko przykładem, bo można użyć dowolnego atrybutu.

Szukanie po tekście i jego fragmencie

Szukanie po tekście to szukanie po tym, co się znajduje pomiędzy tagiem otwierającym i zamykającym. Przykładowo mamy np. poniższy przycisk:

Ukryta treść

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

Tekst, to to co znajduje się pomiędzy <button> a </button>. Nie należy tego mylić z tym co znajduje się w title – specjalnie tutaj dałam taki sam tekst, bo w praktyce często się tak zdarza. Po tytule umiecie już wyszukać, bo tytuł to nic innego jak atrybut. Natomiast to co znajduje się pomiędzy tagiem otwierającym i zamykającym będziemy rozumieli jako tekst.

Do wyszukiwania po tekście służy funkcja text(). Możemy ją również łączyć z funkcjami contains() oraz starts-with(). W takim przypadku postępujemy podobnie jak w przypadku atrybutów tylko zamiast atrybutu podajemy właśnie text().

Ukryta treść

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

W powyższych przykładach pierwszy XPath zaznaczy wszystkie elementy, których tekst jest dokładnie taki jak podany, czyli „Kliknij tutaj”. Drugi XPath zaznaczy wszystkie elementy, których tekst zawiera „tutaj”, a trzeci wszystkie elementy, których tekst zaczyna się od „Kliknij”.

Czy można to wszystko połączyć?

Można! To znaczy, że można użyć zarówno warunku dotyczącego tekstu (lub jego fragmentu) jak i warunku dotyczącego atrybutu (lub również jego fragmentu). Używamy do tego słówka and i kleimy razem to, co już znamy. Kilka przykładów zobaczysz poniżej.

.//h2[text()='Kupuj wg kategorii' and @class='section-title']
.//h2[text()='Kupuj wg kategorii' and contains(@class,'section-title')]
.//h2[starts-with(text(),'Kupuj') and contains(@class,'section-title')]

 

 

 

Wsparcie merytoryczne

Nie masz dostępu do wsparcia merytorycznego dla tego kursu. Wykup dostęp albo zaloguj się, by móc zadawać pytania.