În automatizarea Selenium, dacă elementele nu sunt găsite de localizatorii generali precum id, clasă, nume etc., atunci XPath este folosit pentru a găsi un element pe pagina web.
În acest tutorial, vom afla despre expresia xpath și diferite XPath pentru a găsi elementele complexe sau dinamice, ale căror atribute se modifică dinamic la reîmprospătare sau la orice operații.
În acest tutorial XPath, veți învăța-
- Ce este XPath?
- Tipuri de cale X.
- XPath absolut
- XPath relativ
- XPath de bază
- Conține ()
- Folosind OR & AND
- Începe-cu funcția
- Text()
- Metode axelor XPath
- Ca urmare a
- Strămoş
- Copil
- Precedent
- Următorul-frate
- Mamă
- De sine
- Descendent
Ce este XPath în seleniu?
XPath în Selenium este o cale XML utilizată pentru navigare prin structura HTML a paginii. Este o sintaxă sau un limbaj pentru găsirea oricărui element pe o pagină web utilizând expresia căii XML. XPath poate fi utilizat atât pentru documente HTML, cât și pentru documente XML pentru a găsi locația oricărui element de pe o pagină web utilizând structura DOM HTML.
Formatul de bază al XPath în seleniu este explicat mai jos cu captura de ecran.
Format de bază al XPath
Sintaxa pentru seleniul XPath:
XPath conține calea elementului situat pe pagina web. Sintaxa standard XPath pentru crearea XPath este.
Xpath = // tagname [@ attribute = 'value']
- //: Selectați nodul curent.
- Tagname: Tagname al nodului particular.
- @: Selectați atributul.
- Atribut: numele atributului nodului.
- Valoare: valoarea atributului.
Pentru a găsi elementul pe paginile web cu precizie, există diferite tipuri de localizatori:
Localizatori XPath | Găsiți diferite elemente pe pagina web |
ID | Pentru a găsi elementul după ID-ul elementului |
Numele clasei | Pentru a găsi elementul după Classname al elementului |
Nume | Pentru a găsi elementul după numele elementului |
Text de legătură | Pentru a găsi elementul prin text al linkului |
XPath | XPath este necesar pentru găsirea elementului dinamic și traversarea diferitelor elemente ale paginii web |
Calea CSS | Calea CSS localizează, de asemenea, elemente care nu au nume, clasă sau ID. |
Tipuri de cale X.
Există două tipuri de XPath:
1) XPath absolut
2) XPath relativ
XPath absolut:
Este modalitatea directă de a găsi elementul, dar dezavantajul XPath absolut este că, dacă există modificări aduse în calea elementului, atunci XPath nu reușește.
Caracteristica cheie a XPath este că începe cu o singură bară directă (/), ceea ce înseamnă că puteți selecta elementul din nodul rădăcină.
Mai jos este exemplul unei expresii absolute xpath a elementului prezentat în ecranul de mai jos.
NOTĂ: Puteți practica următorul exercițiu XPath pe acest http://demo.guru99.com/test/selenium-xpath.html
Faceți clic aici dacă videoclipul nu este accesibil
XPath absolut:
/ html / body / div [2] / div [1] / div / h4 [1] / b / html [1] / body [1] / div [2] / div [1] / div [1] / h4 [1] / b [1]
XPath absolut
Xpath relativ:
Xpath relativ începe de la mijlocul structurii DOM HTML. Începe cu o bară dublă înainte (//). Poate căuta elemente oriunde pe pagina web, înseamnă că nu este nevoie să scrieți un xpath lung și puteți începe din mijlocul structurii DOM HTML. Xpath relativ este întotdeauna preferat, deoarece nu este o cale completă de la elementul rădăcină.
Mai jos este exemplul unei expresii relative XPath a aceluiași element prezentat în ecranul de mai jos. Acesta este formatul obișnuit folosit pentru a găsi elementul de XPath.
Faceți clic aici dacă videoclipul nu este accesibil
XPath relativ: // div [@ class = 'featured-box cloumnsize1'] // h4 [1] // b [1]
XPath relativ
Ce sunt axele XPath.
Axele XPath caută diferite noduri în documentul XML din nodul contextual curent. Axele XPath sunt metodele utilizate pentru a găsi elemente dinamice, care altfel nu sunt posibile prin metoda normală XPath care nu are ID, nume de clasă, nume etc.
Metodele axelor sunt folosite pentru a găsi acele elemente, care se schimbă dinamic la reîmprospătare sau la orice alte operații. Există puține metode de axe utilizate în mod obișnuit în Selenium Webdriver, cum ar fi copil, părinte, strămoș, frate, precedent, sine etc.
Utilizarea elementelor complexe și dinamice XPath Handling în Selenium
1) XPath de bază:
Expresia XPath selectează noduri sau o listă de noduri pe baza atributelor precum ID, Nume, Numele clasei etc. din documentul XML așa cum este ilustrat mai jos.
Xpath = // input [@ name = 'uid']
Iată un link pentru a accesa pagina http://demo.guru99.com/test/selenium-xpath.html
XPath de bază
Câteva expresii xpath de bază:
Xpath = // input [@ type = 'text']Xpath = // label [@ 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) Conține ():
Contains () este o metodă utilizată în expresia XPath. Se folosește atunci când valoarea oricărui atribut se modifică dinamic, de exemplu, informațiile de conectare.
Funcția conține are capacitatea de a găsi elementul cu text parțial, așa cum se arată în exemplul XPath de mai jos.
În acest exemplu, am încercat să identificăm elementul doar folosind valoarea textului parțial al atributului. În expresia XPath de mai jos, valoarea parțială „sub” este utilizată în locul butonului de trimitere. Se poate observa că elementul este găsit cu succes.
Valoarea completă a „Tipul” este „trimitere”, dar folosind doar valoarea parțială „sub”.
Xpath = // * [conține (@ tip, 'sub')]
Valoarea completă a „nume” este „btnLogin”, dar folosind doar valoarea parțială „btn”.
Xpath = // * [conține (@ nume, 'btn')]
În expresia de mai sus, am luat „numele” ca atribut și „btn” ca valoare parțială așa cum se arată în captura de ecran de mai jos. Acesta va găsi 2 elemente (LOGIN & RESET), deoarece atributul lor „nume” începe cu „btn”.
În mod similar, în expresia de mai jos, am luat „id” ca atribut și „mesaj” ca valoare parțială. Acesta va găsi 2 elemente („ID-ul utilizatorului nu trebuie să fie necompletat” și „Parola nu trebuie să fie necompletată”) deoarece atributul său „nume” începe cu „mesaj”.
Xpath = // * [conține (@ id, „mesaj”)]
În expresia de mai jos, am luat „textul” linkului ca atribut și „aici” ca valoare parțială așa cum se arată în captura de ecran de mai jos. Acesta va găsi link-ul („aici”) deoarece afișează textul „aici”.
Xpath = // * [conține (text (), „aici”)]Xpath = // * [conține (@ href, „guru99.com”)]
3) Utilizarea OR & AND:
În expresia OR, sunt utilizate două condiții, indiferent dacă prima condiție SAU a doua condiție ar trebui să fie adevărată. Se aplică, de asemenea, dacă o condiție este adevărată sau poate ambele. Înseamnă că orice condiție ar trebui să fie adevărată pentru a găsi elementul.
În expresia XPath de mai jos, identifică elementele ale căror condiții unice sau ambele sunt adevărate.
Xpath = // * [@ type = 'submit' sau @ name = 'btnReset']
Evidențierea ambelor elemente ca element „LOGIN” având atributul „tip” și element „RESET” cu atributul „nume”.
În expresia AND, sunt utilizate două condiții, ambele condiții ar trebui să fie adevărate pentru a găsi elementul. Nu reușește să găsească elementul dacă o condiție este falsă.
Xpath = // input [@ type = 'submit' și @ name = 'btnLogin']
În expresia de mai jos, evidențiați elementul „LOGIN” deoarece are atât atributul „tip”, cât și „nume”.
4) Începe Xpath
XPath începe cu () este o funcție utilizată pentru găsirea elementului web a cărui valoare a atributului se modifică la reîmprospătare sau prin alte operații dinamice de pe pagina web. În această metodă, textul de pornire al atributului este asortat pentru a găsi elementul a cărui valoare a atributului se modifică dinamic. De asemenea, puteți găsi elemente a căror valoare de atribut este statică (nu modificări).
De exemplu -: Să presupunem că ID-ul unui anumit element se modifică dinamic, cum ar fi:
Id = "mesaj12"
Id = "mesaj345"
Id = "mesaj8769"
și așa mai departe ... dar textul inițial este același. În acest caz, folosim expresia Start-with.
În expresia de mai jos, există două elemente cu un id care începe cu „mesaj” (adică „User-ID nu trebuie să fie necompletat” și „Parola nu trebuie să fie necompletată”). În exemplul de mai jos, XPath găsește acel element al cărui „ID” începând cu „mesaj”.
Xpath = // etichetă [începe-cu (@ id, „mesaj”)]
5) Funcția XPath Text ()
Funcția XPath text () este o funcție încorporată a selenium webdriver care este utilizată pentru localizarea elementelor pe baza textului unui element web. Ajută la găsirea exactă a elementelor de text și localizează elementele în setul de noduri de text. Elementele care urmează să fie localizate trebuie să fie în formă de șir.
În această expresie, cu funcția text, găsim elementul cu potrivirea exactă a textului, așa cum se arată mai jos. În cazul nostru, găsim elementul cu textul „UserID”.
Xpath = // td [text () = 'UserID']
6) Metode axelor XPath:
Aceste metode ale axelor XPath sunt utilizate pentru a găsi elementele complexe sau dinamice. Mai jos vom vedea câteva dintre aceste metode.
Pentru a ilustra această metodă a axelor XPath, vom folosi site-ul demonstrativ al băncii Guru99.
a) Următoarele:
Selectează toate elementele din documentul nodului curent () [Caseta de introducere ID utilizator este nodul curent] așa cum se arată în ecranul de mai jos.
Xpath = // * [@ type = 'text'] // following :: input
Există 3 noduri „de intrare” care se potrivesc utilizând parola „următoare” - parola, butonul de conectare și resetare. Dacă doriți să vă concentrați asupra unui anumit element, puteți utiliza metoda XPath de mai jos:
Xpath = // * [@ type = 'text'] // following :: input [1]
Puteți schimba XPath în funcție de cerință, punând [1], [2]
… și așa mai departe.Cu intrarea ca „1”, captura de ecran de mai jos găsește nodul specific care este elementul casetei de intrare „Parolă”.
b) Strămoș:
Axa strămoșilor selectează toate elementele strămoșilor (bunici, părinți etc.) ai nodului curent așa cum se arată în ecranul de mai jos.
În expresia de mai jos, găsim elementul strămoșilor nodului curent (nodul „TESTARE ÎNTREPRINDERII”).
Xpath = // * [text () = 'Enterprise Testing'] // strămoș :: div
Există 13 noduri „div” care se potrivesc utilizând axa „strămoș”. Dacă doriți să vă concentrați asupra unui anumit element, puteți utiliza XPath de mai jos, unde schimbați numărul 1, 2 conform cerințelor dvs.:
Xpath = // * [text () = 'Enterprise Testing'] // ancestor :: div [1]
Puteți schimba XPath în funcție de cerință, punând [1], [2]
… și așa mai departe.c) Copil:
Selectează toate elementele copii ale nodului curent (Java) așa cum se arată în ecranul de mai jos.
Xpath = // * [@ id = 'java_technologies'] // child :: li
Există 71 de noduri „li” care se potrivesc utilizând axa „copil”. Dacă doriți să vă concentrați asupra unui anumit element, puteți utiliza xpath de mai jos:
Xpath = // * [@ id = 'java_technologies'] // child :: li [1]
Puteți schimba xpath în funcție de cerință punând [1], [2]
… și așa mai departe.d) Precedent:
Selectați toate nodurile care vin înainte de nodul curent așa cum se arată în ecranul de mai jos.
În expresia de mai jos, identifică toate elementele de intrare înainte de butonul „LOGIN”, care este Userid și element de introducere parolă .
Xpath = // * [@ type = 'submit'] // precedent :: input
Există 2 noduri „de intrare” care se potrivesc utilizând axa „precedentă”. Dacă doriți să vă concentrați asupra unui anumit element, puteți utiliza XPath de mai jos:
Xpath = // * [@ type = 'submit'] // precedent :: input [1]
Puteți schimba xpath în funcție de cerință punând [1], [2]
… și așa mai departe.e) Următorul-frate:
Selectați următorii frați ai nodului contextual. Frații se află la același nivel al nodului curent, așa cum se arată în ecranul de mai jos. Va găsi elementul după nodul curent.
xpath = // * [@ type = 'submit'] // following-sibling :: input
Un nod de intrare se potrivește utilizând axa „următor-frate”.
f) Părinte:
Selectează părintele nodului curent așa cum se arată în ecranul de mai jos.
Xpath = // * [@ id = 'rt-feature'] // parent :: div
Există 65 de noduri „div” care se potrivesc utilizând axa „părinte”. Dacă doriți să vă concentrați asupra unui anumit element, puteți utiliza XPath de mai jos:
Xpath = // * [@ id = 'rt-feature'] // parent :: div [1]
Puteți schimba XPath în funcție de cerință, punând [1], [2]
… și așa mai departe.g) Sinele:
Selectează nodul curent sau „auto” înseamnă că indică nodul în sine, așa cum se arată în ecranul de mai jos.
Un nod de potrivire utilizând axa „auto”. Întotdeauna găsește doar un singur nod, deoarece reprezintă auto-element.
Xpath = // * [@ type = 'password'] // self :: input
h) Descendent:
Selectează descendenții nodului curent așa cum se arată în ecranul de mai jos.În expresia de mai jos, identifică toți descendenții elementului la elementul curent (elementul cadru „Înconjură corpul principal”), ceea ce înseamnă jos sub nod (nod copil, nod nepot etc.).
Xpath = // * [@ id = 'rt-feature'] // descendent :: a
Există 12 noduri „link” care se potrivesc utilizând axa „descendentă”. Dacă doriți să vă concentrați asupra unui anumit element, puteți utiliza XPath de mai jos:
Xpath = // * [@ id = 'rt-feature'] // descendent :: a [1]
Puteți schimba XPath în funcție de cerință, punând [1], [2]
… și așa mai departe.Rezumat:
XPath este obligat să găsească un element pe pagina web ca să facă o operație pe acel anumit element.
- Există două tipuri de seleniu XPath:
- XPath absolut
- XPath relativ
- Axele XPath sunt metodele utilizate pentru a găsi elemente dinamice, care altfel nu sunt posibile de găsit prin metoda XPath normală
- Expresia XPath selectează noduri sau o listă de noduri pe baza atributelor precum ID, Nume, Numele clasei etc. din documentul XML.