XPath w Selenium: Instruktaż

W czym jest XPath Selenium?

XPath w Selenium to ścieżka XML używana do nawigacji po strukturze HTML strony. Jest to składnia lub język służący do wyszukiwania dowolnego elementu na stronie internetowej za pomocą wyrażenia ścieżki XML. XPath można używać zarówno w dokumentach HTML, jak i XML, aby znaleźć lokalizację dowolnego elementu na stronie internetowej przy użyciu struktury HTML DOM.

In Selenium automatyzacja, jeśli elementy nie zostaną znalezione przez ogólne lokalizatory, takie jak identyfikator, klasa, nazwa itp., wówczas do znalezienia elementu na stronie internetowej używany jest XPath.

W tym samouczku poznamy Xpath i różne wyrażenia XPath umożliwiające znajdowanie złożonych lub dynamicznych elementów, których atrybuty zmieniają się dynamicznie podczas odświeżania lub dowolnych operacji.

Składnia XPath

XPath zawiera ścieżkę do elementu znajdującego się na stronie internetowej. Standardowa składnia XPath do tworzenia XPath to.

Xpath=//tagname[@attribute='value']

Podstawowy format XPath w Selenium wyjaśniono poniżej za pomocą zrzutu ekranu.

Składnia XPath
Podstawowy format XPath
  • // : Wybierz bieżący węzeł.
  • Nazwa znacznika: Zmienna konkretnego węzła.
  • @: Wybierz atrybut.
  • Atrybut: Nazwa atrybutu węzła.
  • Wartość: Wartość atrybutu.

Aby dokładnie znaleźć element na stronach internetowych, stosuje się różne typy lokalizatorów:

Lokalizatory XPath Znajdź różne elementy na stronie internetowej
ID Aby znaleźć element według identyfikatora elementu
Nazwa klasy Aby znaleźć element według nazwy klasy elementu
Nazwa Aby znaleźć element według nazwy elementu
Połącz tekst Aby znaleźć element według tekstu łącza
XPath XPath wymagana do znalezienia elementu dynamicznego i przechodzenia pomiędzy różnymi elementami strony internetowej
Ścieżka CSS Ścieżka CSS lokalizuje również elementy nie posiadające nazwy, klasy ani identyfikatora.

Rodzaje ścieżki X

Istnieją dwa typy XPath:

1) Bezwzględna XPath

2) Względna ścieżka XPath

Absolutna XPath

Jest to bezpośredni sposób na znalezienie elementu, ale wadą bezwzględnej ścieżki XPath jest to, że jeśli w ścieżce elementu zostaną wprowadzone jakiekolwiek zmiany, XPath nie powiedzie się.

Kluczową cechą XPath jest to, że zaczyna się od pojedynczego ukośnika (/), co oznacza, że ​​możesz wybrać element z węzła głównego.

Poniżej znajduje się przykład bezwzględnego wyrażenia Xpath elementu pokazanego na poniższym ekranie.

UWAGA: Możesz przećwiczyć następujące ćwiczenie XPath https://demo.guru99.com/test/selenium-xpath.html

Kliknij tutaj jeśli film nie jest dostępny

Absolutna ścieżka XPath:

/html/body/div[2]/div[1]/div/h4[1]/b/html[1]/body[1]/div[2]/div[1]/div[1]/h4[1]/b[1]

Absolutna XPath
Absolutna XPath

Względna ścieżka X

Względna ścieżka X zaczyna się od środka struktury HTML DOM. Zaczyna się podwójnym ukośnikiem (//). Może wyszukiwać elementy w dowolnym miejscu na stronie internetowej, co oznacza, że ​​nie ma potrzeby pisania długiej ścieżki xpath i można zacząć od środka struktury HTML DOM. Względna ścieżka xpath jest zawsze preferowana, ponieważ nie jest to kompletna ścieżka od elementu głównego.

Poniżej znajduje się przykład względnego wyrażenia XPath tego samego elementu pokazanego na poniższym ekranie. Jest to powszechny format używany do wyszukiwania elementów za pomocą XPath.

Kliknij tutaj jeśli film nie jest dostępny

Relative XPath: //div[@class='featured-box cloumnsize1']//h4[1]//b[1]

Względna ścieżka XPath
Względna ścieżka XPath

Co to są osie XPath.

Osie XPath przeszukują różne węzły w dokumencie XML z bieżącego węzła kontekstu. Osie XPath to metody używane do znajdowania elementów dynamicznych, które w innym przypadku nie byłyby możliwe za pomocą zwykłej metody XPath bez identyfikatora, nazwy klasy, nazwy itp. XPath w Selenium zawiera kilka metod, takich jak Contains, AND, Absolute XPath i Relative XPath, umożliwiających identyfikację i lokalizację elementów dynamicznych na podstawie różnych atrybutów i warunków.

Metody osi służą do znajdowania elementów, które dynamicznie zmieniają się podczas odświeżania lub innych operacji. Istnieje kilka metod osi powszechnie używanych w Selenium Sterownik internetowy jak dziecko, rodzic, przodek, rodzeństwo, poprzednik, ja itp.

Jak zapisać dynamiczną ścieżkę XPath w Selenium Sterownik sieciowy

1) Podstawowa ścieżka XPath

Wyrażenie XPath wybiera węzły lub listę węzłów na podstawie atrybutów takich jak Identyfikator, nazwa, nazwa klasyitp. z dokumentu XML, jak pokazano poniżej.

Xpath=//input[@name='uid']

Oto link umożliwiający dostęp do strony https://demo.guru99.com/test/selenium-xpath.html

Podstawowa ścieżka XPath
Podstawowa ścieżka XPath

Kilka bardziej podstawowych wyrażeń xpath:

Xpath=//input[@type='text']
Xpath=//label[@id='message23']
Xpath=//input[@value='RESET']
Xpath=//*[@class='barone']
Xpath=//a[@href='https://demo.guru99.com/']
Xpath=//img[@src='//guru99.com/images/home/java.png']

2) Zawiera()

Zawiera() to metoda używana w wyrażeniu XPath. Stosuje się go, gdy wartość dowolnego atrybutu zmienia się dynamicznie, na przykład dane logowania.

Funkcja zawierająca umożliwia znalezienie elementu z częściowym tekstem, jak pokazano w poniższym przykładzie XPath.

W tym przykładzie próbowaliśmy zidentyfikować element, używając jedynie częściowej wartości tekstowej atrybutu. W poniższym wyrażeniu XPath zamiast przycisku przesyłania używana jest wartość częściowa „sub”. Można zaobserwować, że element został pomyślnie znaleziony.

Pełna wartość „Typ” to „Prześlij”, ale używana jest tylko częściowa wartość „sub”.

Xpath=//*[contains(@type,'sub')]

Pełna wartość „name” to „btnLogin”, ale używana jest tylko częściowa wartość „btn”.

Xpath=//*[contains(@name,'btn')]

W powyższym wyrażeniu przyjęliśmy „nazwę” jako atrybut, a „btn” jako wartość częściową, jak pokazano na poniższym zrzucie ekranu. Spowoduje to znalezienie 2 elementów (LOGIN i RESET), ponieważ ich atrybut „name” zaczyna się od „btn”.

Zawiera()

Podobnie w poniższym wyrażeniu przyjęliśmy „id” jako atrybut, a „wiadomość” jako wartość częściową. Spowoduje to znalezienie 2 elementów („Identyfikator użytkownika nie może być pusty” i „Hasło nie może być puste”), ponieważ jego atrybut „id” zaczyna się od „wiadomości”.

Xpath=//*[contains(@id,'message')]

Zawiera()

W poniższym wyrażeniu przyjęliśmy „tekst” linku jako atrybut, a „tutaj” jako wartość częściową, jak pokazano na poniższym zrzucie ekranu. Spowoduje to znalezienie linku („tutaj”), ponieważ wyświetli się tekst „tutaj”.

Xpath=//*[contains(text(),'here')]
Xpath=//*[contains(@href,'guru99.com')]

Zawiera()

3) Używanie OR i AND

W wyrażeniu OR używane są dwa warunki, czy pierwszy warunek LUB drugi warunek powinien być prawdziwy. Ma to również zastosowanie, jeśli którykolwiek warunek jest prawdziwy, a może oba. Oznacza, że ​​każdy warunek powinien być spełniony, aby znaleźć element.

W poniższym wyrażeniu XPath identyfikuje elementy, których jeden lub oba warunki są spełnione.

Xpath=//*[@type='submit' or @name='btnReset']

Podświetlenie obu elementów jako elementu „LOGIN” posiadającego atrybut „typ” oraz elementu „RESET” posiadającego atrybut „nazwa”.

Używanie OR i AND

W wyrażeniu AND używane są dwa warunki. Aby znaleźć element, oba muszą być spełnione. Nie można znaleźć elementu, jeśli którykolwiek warunek jest fałszywy.

Xpath=//input[@type='submit' and @name='btnLogin']

W poniższym wyrażeniu podświetlamy element „LOGIN”, ponieważ ma on zarówno atrybut „typ”, jak i „nazwę”.

Używanie OR i AND

4) Xpath zaczyna się od

XPath zaczyna się od() jest funkcją używaną do znajdowania elementu sieci, którego wartość atrybutu ulega zmianie podczas odświeżania lub przez inne dynamiczne operacje na stronie sieci. W tej metodzie początkowy tekst atrybutu jest dopasowywany w celu znalezienia elementu, którego wartość atrybutu zmienia się dynamicznie. Można również znaleźć elementy, których wartość atrybutu jest statyczna (nie zmienia się).

Na przykład -: Załóżmy, że identyfikator konkretnego elementu zmienia się dynamicznie, jak:

Id=”wiadomość12″

Id=”wiadomość345″

Id=”wiadomość8769″

i tak dalej... ale początkowy tekst jest taki sam. W tym przypadku używamy wyrażenia Zacznij od.

W poniższym wyrażeniu znajdują się dwa elementy, których identyfikator rozpoczyna się od „wiadomości” (np. „ID użytkownika nie może być puste” i „Hasło nie może być puste”). W poniższym przykładzie XPath znajduje te elementy, których „ID” zaczyna się od „wiadomości”.

Xpath=//label[starts-with(@id,'message')]

Xpath zaczyna się od

5) Funkcja XPath Text().

Funkcja tekstowa XPath(). jest wbudowaną funkcją selenium webdriver, która służy do lokalizowania elementów na podstawie tekstu elementu sieciowego. Pomaga znaleźć dokładne elementy tekstowe i lokalizuje elementy w zestawie węzłów tekstowych. Elementy, które mają zostać zlokalizowane, powinny być w formie ciągu.

W tym wyrażeniu za pomocą funkcji tekstowej znajdujemy element z dokładnym dopasowaniem tekstu, jak pokazano poniżej. W naszym przypadku znajdziemy element z tekstem „UserID”.

Xpath=//td[text()='UserID']

Funkcja XPath Text().

Metody osi XPath

Te metody osi XPath są używane do znajdowania złożonych lub dynamicznych elementów. Poniżej zobaczymy niektóre z tych metod.

Aby zilustrować tę metodę osi XPath, skorzystamy z witryny demonstracyjnej banku Guru99.

1) Następujący

Wybiera wszystkie elementy w dokumencie bieżącego węzła ( ) [Pole wprowadzania UserID to bieżący węzeł], jak pokazano na poniższym ekranie.

Xpath=//*[@type='text']//following::input

Obserwowane

Istnieją 3 węzły „wejściowe” pasujące do siebie za pomocą osi „following” – hasło, login i przycisk resetowania. Jeśli chcesz skupić się na dowolnym konkretnym elemencie, możesz użyć poniższej metody XPath:

Xpath=//*[@type='text']//following::input[1]

Możesz zmienić XPath zgodnie z wymaganiami, wstawiając [1], [2]………… i tak dalej.

Przy wprowadzonych danych „1” poniższy zrzut ekranu odnajduje konkretny węzeł, którym jest element pola wprowadzania „Hasło”.

Obserwowane

2) Przodek

Oś przodków wybiera wszystkie elementy przodków (dziadków, rodziców itp.) bieżącego węzła, jak pokazano na poniższym ekranie.

W poniższym wyrażeniu znajdujemy element przodków bieżącego węzła (węzeł „TESTOWANIE PRZEDSIĘBIORSTWA”).

Xpath=//*[text()='Enterprise Testing']//ancestor::div

Przodek

Istnieje 13 węzłów „div” pasujących za pomocą osi „przodka”. Jeśli chcesz skupić się na jakimś konkretnym elemencie, możesz skorzystać z poniższej ścieżki XPath, w której zmieniasz cyfry 1, 2 zgodnie ze swoimi wymaganiami:

Xpath=//*[text()='Enterprise Testing']//ancestor::div[1]

Możesz zmienić XPath zgodnie z wymaganiami, wstawiając [1], [2]………… i tak dalej.

3) Dziecko

Wybiera wszystkie elementy podrzędne bieżącego węzła (Java), jak pokazano na poniższym ekranie.

Xpath=//*[@id='java_technologies']//child::li

Dziecko

Istnieje 71 węzłów „li” dopasowujących się przy użyciu osi „dziecko”. Jeśli chcesz skupić się na jakimś konkretnym elemencie, możesz użyć poniższej ścieżki xpath:

Xpath=//*[@id='java_technologies']//child::li[1]

Możesz zmienić ścieżkę xpath zgodnie z wymaganiami, wstawiając [1], [2]………… i tak dalej.

4) Poprzednie

Wybierz wszystkie węzły poprzedzające bieżący węzeł, jak pokazano na poniższym ekranie.

W poniższym wyrażeniu identyfikuje wszystkie elementy wejściowe znajdujące się przed przyciskiem „LOGIN”. Identyfikator użytkownika oraz password element wejściowy.

Xpath=//*[@type='submit']//preceding::input

Poprzedzający

Istnieją 2 węzły „wejściowe” dopasowujące się za pomocą osi „poprzedzającej”. Jeśli chcesz skupić się na jakimś konkretnym elemencie, możesz użyć poniższej ścieżki XPath:

Xpath=//*[@type='submit']//preceding::input[1]

Możesz zmienić ścieżkę xpath zgodnie z wymaganiami, wstawiając [1], [2]………… i tak dalej.

5) Następne rodzeństwo

Wybierz następujące rodzeństwa węzła kontekstowego. Rodzeństwa są na tym samym poziomie co bieżący węzeł, jak pokazano na poniższym ekranie. Zostanie znaleziony element po bieżącym węźle.

xpath=//*[@type='submit']//following-sibling::input

Następujące rodzeństwo

Dopasowanie jednego węzła wejściowego odbywa się za pomocą osi „śledzącego rodzeństwa”.

6) Rodzic

Wybiera rodzica bieżącego węzła, jak pokazano na poniższym ekranie.

Xpath=//*[@id='rt-feature']//parent::div

Rodzic

Istnieje 65 węzłów „div” pasujących przy użyciu osi „nadrzędnej”. Jeśli chcesz skupić się na jakimś konkretnym elemencie, możesz użyć poniższej ścieżki XPath:

Xpath=//*[@id='rt-feature']//parent::div[1]

Możesz zmienić XPath zgodnie z wymaganiami, wstawiając [1], [2]………… i tak dalej.

7) Ja

Wybiera bieżący węzeł lub „self” oznacza, że ​​wskazuje sam węzeł, jak pokazano na poniższym ekranie.

Samego siebie

Dopasowanie jednego węzła przy użyciu osi „self”. Zawsze znajduje tylko jeden węzeł, ponieważ reprezentuje element własny.

Xpath =//*[@type='password']//self::input

8) Potomek

Wybiera potomków bieżącego węzła, jak pokazano na poniższym ekranie.

W poniższym wyrażeniu identyfikuje wszystkie elementy potomków bieżącego elementu (element ramki „Główny korpus otaczający”), co oznacza w dół pod węzłem (węzeł podrzędny, węzeł wnuka itp.).

Xpath=//*[@id='rt-feature']//descendant::a

potomek

Istnieje 12 węzłów „połączenia” pasujących za pomocą osi „potomka”. Jeśli chcesz skupić się na jakimś konkretnym elemencie, możesz użyć poniższej ścieżki XPath:

Xpath=//*[@id='rt-feature']//descendant::a[1]

Możesz zmienić XPath zgodnie z wymaganiami, wstawiając [1], [2]………… i tak dalej.

Podsumowanie

XPath jest wymagany do znalezienia elementu na stronie internetowej i wykonania operacji na tym konkretnym elemencie.

  • Istnieją dwa typy Selenium XPath:
    • Absolutna XPath
    • Względna ścieżka XPath
  • Osie XPath to metody służące do znajdowania elementów dynamicznych, których inaczej nie można znaleźć za pomocą zwykłej metody XPath
  • Wyrażenie XPath wybiera węzły lub listę węzłów na podstawie atrybutów takich jak ID, nazwa, nazwa klasy itp. z dokumentu XML.

Sprawdź również: - Selenium Samouczek dla początkujących: Naucz się WebDrivera w 7 dni