XPath w Selenium WebDriver Tutorial: Jak znaleźć XPath?

Spisie treści:

Anonim

W automatyzacji Selenium, jeśli elementy nie zostaną znalezione przez ogólne lokalizatory, takie jak id, klasa, nazwa itp., To XPath jest używany do znalezienia elementu na stronie internetowej.

W tym samouczku nauczymy się o xpath i różnych wyrażeniach XPath, aby znaleźć złożone lub dynamiczne elementy, których atrybuty zmieniają się dynamicznie podczas odświeżania lub dowolnej operacji.

W tym samouczku XPath nauczysz się:

  • Co to jest XPath?
  • Rodzaje ścieżek X.
    • Absolute XPath
    • Względna XPath
  • Podstawowy XPath
  • Zawiera ()
  • Korzystanie z OR i AND
  • Rozpoczyna się z funkcją
  • Tekst()
  • Metody osi XPath
    • Następujący
    • Przodek
    • Dziecko
    • Poprzedzający
    • Następujące rodzeństwo
    • Rodzic
    • Samego siebie
    • Potomek

Co to jest XPath w selenie?

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 znajdowania dowolnego elementu na stronie internetowej przy użyciu wyrażenia ścieżki XML. XPath może być używany zarówno dla dokumentów HTML, jak i XML, aby znaleźć lokalizację dowolnego elementu na stronie internetowej przy użyciu struktury HTML DOM.

Podstawowy format XPath w selenie jest wyjaśniony poniżej na zrzucie ekranu.

Podstawowy format XPath

Składnia selenu XPath:

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

Xpath = // zmienna [@ atrybut = 'wartość']
  • //: Wybierz aktualny węzeł.
  • Zmienna: zmienna danego węzła.
  • @: Wybierz atrybut.
  • Atrybut: nazwa atrybutu węzła.
  • Wartość: wartość atrybutu.

Aby dokładnie znaleźć element na stronach internetowych, istnieją 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
tekst linku Aby znaleźć element według tekstu linku
XPath XPath wymagany do znalezienia elementu dynamicznego i przechodzenia między różnymi elementami strony internetowej
Ścieżka CSS Ścieżka CSS również lokalizuje elementy bez nazwy, klasy ani identyfikatora.

Rodzaje ścieżek X.

Istnieją dwa rodzaje XPath:

1) Absolute XPath

2) Względna XPath

Absolute XPath:

Jest to bezpośredni sposób na znalezienie elementu, ale wadą bezwzględnego XPath jest to, że jeśli w ścieżce elementu zostaną wprowadzone jakiekolwiek zmiany, to XPath zakończy się niepowodzeniem.

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 wyrażenia bezwzględnego xpath elementu pokazanego na poniższym ekranie.

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

Kliknij tutaj, jeśli wideo nie jest dostępne

Absolute 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]

Absolute XPath

Względna ścieżka Xpath:

Relative Xpath zaczyna się od środka struktury HTML DOM. Zaczyna się od podwójnego ukośnika (//). 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 pełna ś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 typowy format używany do znajdowania elementu przez XPath.

Kliknij tutaj, jeśli wideo nie jest dostępne

Względna ścieżka XPath: // div [@ class = 'featured-box cloumnsize1'] // h4 [1] // b [1]

Względna 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, co w innym przypadku nie byłoby możliwe w przypadku zwykłej metody XPath bez identyfikatora, nazwy klasy, nazwy itp.

Metody Axes służą do znajdowania tych elementów, które zmieniają się dynamicznie podczas odświeżania lub innych operacji. Istnieje kilka metod osi powszechnie używanych w Selenium Webdriver, takich jak dziecko, rodzic, przodek, rodzeństwo, poprzedzający, ja itd.

Korzystanie z XPath Obsługa złożonych i dynamicznych elementów w Selenium

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 klasy itp. Z dokumentu XML, jak pokazano poniżej.

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

Oto link prowadzący do strony http://demo.guru99.com/test/selenium-xpath.html

Podstawowy XPath

Kilka bardziej podstawowych wyrażeń xpath:

Xpath = // input [@ type = 'tekst']Xpath = // etykieta [@ id = 'message23']Xpath = // input [@ value = 'RESET']Xpath = // * [@ class = 'barone']Xpath = // a [@ href = 'http: //demo.guru99.com/']Xpath = //img[@src='//cdn.guru99.com/images/home/java.png.webp ']

2) Zawiera ():

Contains () to metoda używana w wyrażeniu XPath. Jest używany, gdy wartość dowolnego atrybutu zmienia się dynamicznie, na przykład informacje logowania.

Funkcja zawiera możliwość znalezienia elementu z częściowym tekstem, jak pokazano na poniższym przykładzie XPath.

W tym przykładzie próbowaliśmy zidentyfikować element, używając po prostu 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 zauważyć, że element został znaleziony pomyślnie.

Pełna wartość „Typ” to „prześlij”, ale z użyciem tylko częściowej wartości „sub”.

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

Pełna wartość „name” to „btnLogin”, ale przy użyciu tylko częściowej wartości „btn”.

Xpath = // * [zawiera (@ nazwa, „btn”)]

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

Podobnie w poniższym wyrażeniu przyjęliśmy „id” jako atrybut, a „komunikat” jako wartość częściową. Znajdzie to 2 elementy („User-ID nie może być puste” i „Hasło nie może być puste”), ponieważ jego atrybut „name” zaczyna się od „message”.

Xpath = // * [zawiera (@ id, 'wiadomość')] 

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 odnalezienie linku („tutaj”), ponieważ wyświetla tekst „tutaj”.

Xpath = // * [zawiera (text (), 'tutaj')]Xpath = // * [zawiera (@ href, „guru99.com”)] 

3) Korzystanie z funkcji OR & AND:

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

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

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

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

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

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

W poniższym wyrażeniu podkreślono element „LOGIN”, ponieważ ma on zarówno atrybut „typ”, jak i „nazwa”.

4) Xpath zaczyna się od

XPath zaczyna się od () to funkcja używana do znajdowania elementu WWW, którego wartość atrybutu zmienia się przy odświeżaniu lub w wyniku innych dynamicznych operacji na stronie internetowej. W tej metodzie początkowy tekst atrybutu jest dopasowywany w celu znalezienia elementu, którego wartość atrybutu zmienia się dynamicznie. Możesz 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, na przykład:

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 Start-with.

W poniższym wyrażeniu znajdują się dwa elementy z identyfikatorem rozpoczynającym się od „wiadomości” (tj. „User-ID nie może być puste” & „Hasło nie może być puste”). W poniższym przykładzie XPath znajduje te elementy, których „ID” zaczyna się od „message”.

Xpath = // etykieta [zaczyna się od (@ id, 'wiadomość')]

5) Funkcja XPath Text ()

Funkcja XPath text () jest wbudowaną funkcją selenu webdriver, która służy do lokalizowania elementów na podstawie tekstu elementu internetowego. Pomaga znaleźć dokładne elementy tekstu i lokalizuje elementy w zestawie węzłów tekstowych. Elementy, które mają być zlokalizowane, powinny mieć postać ciągów.

W tym wyrażeniu z funkcją tekstową znajdujemy element z dokładnym dopasowaniem tekstu, jak pokazano poniżej. W naszym przypadku znajdujemy element z tekstem „UserID”.

Xpath = // td [text () = 'ID użytkownika'] 

6) Metody osi XPath:

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

Aby zilustrować tę metodę osi XPath, użyjemy witryny demonstracyjnej banku Guru99.

a) Obserwowanie:

Wybiera wszystkie elementy w dokumencie bieżącego węzła () [Pole wejściowe ID użytkownika to bieżący węzeł], jak pokazano na poniższym ekranie.

Xpath = // * [@ type = 'text'] // następujący :: input

Istnieją 3 węzły „wejściowe”, które dopasowują się za pomocą osi „podążającej” - hasło, przycisk logowania i resetowania. Jeśli chcesz skupić się na jakimkolwiek konkretnym elemencie, możesz użyć poniższej metody XPath:

Xpath = // * [@ type = 'text'] // następujący :: input [1]

Możesz zmienić XPath zgodnie z wymaganiami, umieszczając [1], [2]

… i tak dalej.

Z wejściem równym „1”, poniższy zrzut ekranu wyszukuje konkretny węzeł, który jest elementem pola wprowadzania „Hasło”.

b) Przodek:

Oś przodka wybiera wszystkie elementy przodków (dziadek, rodzic 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ĘBIORCZOŚCI”).

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

Istnieje 13 węzłów „div” dopasowanych za pomocą osi „przodka”. Jeśli chcesz skupić się na jakimkolwiek konkretnym elemencie, możesz skorzystać z poniższej XPath, w której możesz zmienić liczbę 1, 2 zgodnie z wymaganiami:

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

Możesz zmienić XPath zgodnie z wymaganiami, umieszczając [1], [2]

… i tak dalej.

c) dziecko:

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

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

Istnieje 71 węzłów „li” dopasowanych za pomocą osi „potomnej”. 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 wymaganiem, umieszczając [1], [2]

… i tak dalej.

d) poprzedzające:

Wybierz wszystkie węzły, które znajdują się przed bieżącym węzłem, jak pokazano na poniższym ekranie.

W poniższym wyrażeniu identyfikuje wszystkie elementy wejściowe przed przyciskiem „LOGIN”, czyli identyfikator użytkownika i element wejściowy hasła .

Xpath = // * [@ type = 'submit'] // poprzedzające :: input

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

Xpath = // * [@ type = 'submit'] // poprzedzające :: input [1]

Możesz zmienić ścieżkę xpath zgodnie z wymaganiem, umieszczając [1], [2]

… i tak dalej.

e) Następujące rodzeństwo:

Wybierz następujące rodzeństwo węzła kontekstu. Rodzeństwo jest na tym samym poziomie obecnego węzła, jak pokazano na poniższym ekranie. Znajdzie element po aktualnym węźle.

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

Dopasowanie jednego węzła wejściowego za pomocą osi „podążającej-rodzeństwa”.

f) Rodzic:

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

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

Istnieje 65 węzłów „div” dopasowanych za pomocą osi „nadrzędnej”. Jeśli chcesz skupić się na jakimkolwiek konkretnym elemencie, możesz użyć poniższej XPath:

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

Możesz zmienić XPath zgodnie z wymaganiami, umieszczając [1], [2]

… i tak dalej.

g) Ja:

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

Dopasowanie jednego węzła za pomocą osi „własnej”. Zawsze znajduje tylko jeden węzeł, ponieważ reprezentuje element własny.

Xpath = // * [@ type = 'hasło'] // self :: input

h) potomek:

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

W poniższym wyrażeniu identyfikuje wszystkie elementy potomne elementu bieżącego (element ramki „Main body surround”), co oznacza, że ​​znajduje się pod węzłem (węzeł podrzędny, węzeł wnuków itp.).

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

Istnieje 12 węzłów „linków” dopasowanych za pomocą osi „podrzędnej”. Jeśli chcesz skupić się na jakimś konkretnym elemencie, możesz użyć poniższej XPath:

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

Możesz zmienić XPath zgodnie z wymaganiami, umieszczając [1], [2]

… i tak dalej.

Podsumowanie:

XPath jest wymagane, aby znaleźć element na stronie internetowej, aby wykonać operację na tym konkretnym elemencie.

  • Istnieją dwa rodzaje selenu XPath:
    • Absolute XPath
    • Względna XPath
  • Osie XPath to metody używane do znajdowania elementów dynamicznych, które w innym przypadku nie byłyby możliwe do znalezienia przy użyciu 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.