Względne lokatory w Selenium 4

Interesuje Cię ten kurs?

Zapisz się na listę, a wyślę Ci szczegóły i informację jak dołączyć 👇 

Do tej pory by zlokalizować jakiś element na stronie mogliśmy skorzystać z jednej z 8 strategii lokalizacyjnych. Teraz z Selenium 4 dostajemy jeszcze rozszerzenie w postaci względnych lokatorów.

Temat lokatorów w kursie Selenium pokrywają 3 moduły: proste lokatory, selektory CSS oraz XPath. Przejdź do strony kursu Selenium w Javie lub Selenium w C# jeżeli potrzebujesz sobie przypomnieć te zagadnienia.

Jak było dotychczas

Dotychczas mogliśmy wybrać jedną z 8 strategii lokalizacyjnych, do namierzenia elementów na stronie:

  • nazwa klasy
  • wartość atrybutu name
  • id elementu
  • nazwa taga
  • tekst linku
  • częściowy tekst linku
  • selektory css
  • XPath

Te strategie trzeba było przekazać do metody findElement (FindElement w C#) lub findElements (FindElements w C#) i w ten sposób otrzymywaliśmy obiekt klasy WebElement. Wszystkie te strategie omówiłam zarówno w kursie Selenium w Javie jak i Selenium w C#.

Jak jest w Selenium 4

To, co było do tej pory zostaje w mocy. Dostajemy za to całkiem nową strategię lokalizacyjną, jaką są względne lokatory. Jak się może domyślasz, względne lokatory pozwalają na zlokalizowanie elementu względem innego elementu. Czyli np. będziemy mogli znaleźć jakiś element na podstawie informacji, że jest on powyżej innego elementu.

Dostępne opcje to (dla Javy/dla C#):

  • toRightOf/RightOf(na prawo od)
  • toLeftOf/LeftOf (na lewo od)
  • above/Above (powyżej)
  • below/Below (poniżej)
  • near/Near (w okolicy)

Żeby móc skorzystać z tych metod musimy najpierw za pomocą metody with w Javie lub WithLocator w C# wskazać, że będziemy używać lokatora względnego.

Parametry i użycie

Najpierw przykład, bo bez przykładu to nie będzie niczego.

Ukryta treść

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

To co się dzieje w kodzie, to najpierw budujemy lokator dla pola z ilością produktu jaką chcemy dodać do koszyka. To jest to pole z wartością „1”, bo domyślnie chcemy dodać właśnie jeden produkt. Tego elementu użyjemy właśnie jako punktu odniesienia dla przycisku „Dodaj do koszyka”. Moglibyśmy ten przycisk zlokalizować normalnie, ale na potrzeby tego przykładu używamy lokatora względnego.

Gdyby przetłumaczyć ten mały kawałek kodu z „seleniowego” na nasze to wyszłoby coś takiego:

  1. zbuduj lokator dla elementu bazowego,
  2. zbuduj relatywny lokator dla nowego elementu, wiedząc, że jest on zaraz na prawo od elementu bazowego,
  3. znajdź ten element używając wcześniej zbudowanego lokatora względnego i kliknij w niego.

W ten sam sposób możemy użyć pozostałych metod pozwalających na zlokalizowanie elementu na lewo, powyżej, poniżej i w pobliżu innego elementu. Co więcej, w tych metodach możemy zamiast lokatora przekazać od razu element.

Ukryta treść

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

Metodą, która może przyjmować dodatkowy parametr jest near (Near w C#). Według dokumentacji metoda ta pozwoli na zidentyfikowanie elementu, który jest nie dalej niż 50 pikseli od elementu bazowego. No chyba, że zdecydujemy się użyć dodatkowego parametru, który to tę maksymalną odległość zmieni.

Ukryta treść

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

Przestroga

Jeżeli nie musisz używać względnych lokatorów, to moje zalecenie jest takie, żeby tego nie robić. Względne lokatory są trochę chybotliwe. Są po prostu jakieś takie mniej ścisłe i konkretne. Z „normalnymi” lokatorami wiem na pewno jaki element zostanie zaznaczony. Tutaj natomiast coś wygląda, że jest poniżej, ale niekoniecznie jest: zobacz ten wątek na GitHubie. Sami deweloperzy pracujący przy Selenium mówią: „Relative locators are a nice shortcut when the specific DOM you are working with makes them easy to use, and will be more trouble than they are worth for most others.”. Powiedziałabym więc, że jest to jedno z narzędzi do zadań specjalnych, podobnie jak np. klasa Action i Actions.

Kod

Java

Ukryta treść

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

C#

Ukryta treść

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