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 9. Negacja

W tej lekcji, jako bonus, pojawi się funkcja not, a więc negacja w XPath. Pokażę Ci kilka przykładowych zastosowań tej funkcji do zaznaczania elementów na stronie w Selenium.

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

Negacja w XPath: linki i materiały

Negacja w XPath przydaje się, gdy nie wiemy czego chcemy (albo nie możemy się posłużyć takim XPathem, bo wskazuje kilka elementów zamiast jednego), ale wiemy czego nie chcemy. Za pomocą funkcji not możemy zaprzeczać różnym warunkom i kilka z nich zobaczysz w tej lekcji.

Atrybut

Za pomocą funkcji not możemy np. wyszukać taki element, którego dany atrybut, np. klasa, nie jest równy podanej przez nas wartości.

Ukryta treść

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

Powyższy XPath zrobi właśnie coś takiego: znajdzie nam takie elementy o tagu td, których klasa nie jest równa product-remove.

Możemy także znaleźć takie elementy, które podanego atrybutu w ogóle nie mają.

Ukryta treść

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

Powyższy XPath zatem zaznaczy nam takie elementy o tagu td, które nie mają atrybutu class.

Możemy także zbudować XPatha zarówno w oparciu o funkcję not jak i dorzucić do niego jeszcze jakąś inną funkcję. Chcąc np. zaznaczyć takie elementy o tagu td, których klasa nie zawiera product, musimy się także posłużyć funkcją contains. W takim wypadku nasz XPath będzie wyglądał jak poniżej.

Ukryta treść

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

Tagi

Trochę podchwytliwy jest przykład, jeżeli chodzi o negacj ę taga, czyli sytuację, kiedy np. chcemy zaznaczyć wszystkie elementy, które mają tag inny niż td. Podchwytliwy, bo pewnie jakbyście mieli teraz zgadywać jakby to wyglądało, to zgadlibyście coś takiego:

Ukryta treść

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

No ale właśnie nie, trzeba użyć czegoś, czego jeszcze nie widzieliśmy w tym kursie.

Ukryta treść

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

Czyli zaznaczmy jakby wszystkie elementy, a dopiero potem mówimy: ale nie takie, które są o tagu td. 

W ogóle w ramach ciekawostki: .//*[self::td] zaznaczy nam to samo co .//td

Pozycja i jeszcze jeden rodzaj zaprzeczenia

Spójrz na poniższy XPath.

Ukryta treść

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

Funkcji position możemy używać nie tylko ze znakami większości i mniejszości ale także tak jak widzisz na powyższym przykładzie. Taki XPath zaznaczy nam wszystkie elementy td, które nie są pierwszymi dziećmi o tym tagu swojego rodzica.

W tym przypadku możemy jednak zaznaczyć te same elementy w jeszcze jeden sposób.

Ukryta treść

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

Czyli zamiast używać funkcji not możemy użyć != do uzyskania takiego samego efektu.

Wsparcie merytoryczne

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