Cum să utilizați XPath în Selenium? Tutorial
În ce este XPath Selenium?
XPath în Selenium este o cale XML folosită pentru navigarea prin structura HTML a paginii. Este o sintaxă sau un limbaj pentru găsirea oricărui element pe o pagină web folosind expresia cale XML. XPath poate fi folosit atât pentru documente HTML, cât și pentru documente XML pentru a găsi locația oricărui element pe o pagină web folosind structura HTML DOM.
In Selenium automatizare, dacă elementele nu sunt găsite de locatorii generali, cum ar fi id, clasă, nume etc., atunci XPath este folosit pentru a găsi un element pe pagina web.
În acest tutorial, vom afla despre Xpath și diferite expresii XPath pentru a găsi elementele complexe sau dinamice, ale căror atribute se schimbă dinamic la reîmprospătare sau la orice operație.
Sintaxa XPath
XPath conține calea elementului situat pe pagina web. Sintaxa standard XPath pentru crearea XPath este.
Xpath=//tagname[@attribute='value']
Formatul de bază al XPath în seleniu este explicat mai jos cu captură de ecran.
- // : Selectați nodul curent.
- Nume eticheta: Numele de etichetă al nodului particular.
- @: Selectați atributul.
- Atribut: Numele atributului nodului.
- Valoare: Valoarea atributului.
Pentru a găsi cu precizie elementul pe paginile web, 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 necesar pentru găsirea elementului dinamic și traversarea între diferitele elemente ale paginii web |
Calea CSS | Calea CSS localizează, de asemenea, elemente fără 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-ului absolut este că, dacă există modificări în calea elementului, atunci XPath-ul eșuează.
Caracteristica cheie a XPath este că începe cu o singură oblică oblică(/), ceea ce înseamnă că puteți selecta elementul din nodul rădăcină.
Mai jos este un exemplu de expresie Xpath absolută a elementului afișat în ecranul de mai jos.
NOTĂ: Puteți exersa următorul exercițiu XPath în acest sens https://demo.guru99.com/test/selenium-xpath.html
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]
Relativ Xpath
Relativ Xpath începe de la mijlocul structurii HTML DOM. Începe cu dublă oblică (//). Poate căuta elemente oriunde pe pagina web, înseamnă că nu este nevoie să scrieți un xpath lung și puteți începe de la mijlocul structurii HTML DOM. Xpath relativ este întotdeauna preferat, deoarece nu este o cale completă de la elementul rădăcină.
Mai jos este exemplul unei expresii XPath relative a aceluiași element afișat în ecranul de mai jos. Acesta este formatul comun folosit pentru a găsi element de către XPath.
Clic aici dacă videoclipul nu este accesibil
Relative XPath: //div[@class='featured-box cloumnsize1']//h4[1]//b[1]
Ce sunt axele XPath.
XPath Axes caută diferite noduri în documentul XML din nodul context curent. Axele XPath sunt metodele folosite pentru a găsi elemente dinamice, care altfel nu sunt posibile prin metoda XPath normală, fără ID, Classname, Name etc. XPath în Selenium include mai multe metode, cum ar fi Conține, AND, Absolute XPath și Relative XPath pentru a identifica și localiza elemente dinamice pe baza diferitelor atribute și condiții.
Metodele axelor sunt folosite pentru a găsi acele elemente, care se schimbă dinamic la reîmprospătare sau orice alte operații. Există puține metode de axe utilizate în mod obișnuit în Selenium Webdriver cum ar fi copilul, părintele, strămoșul, fratele, precedentul, sinele etc.
Cum se scrie Dynamic XPath în Selenium webdriver
1) XPath de bază
Expresia XPath selectează noduri sau listă de noduri pe baza unor atribute precum ID, Nume, Nume clasă, etc. din documentul XML, așa cum este ilustrat mai jos.
Xpath=//input[@name='uid']
Iată un link pentru a accesa pagina https://demo.guru99.com/test/selenium-xpath.html
Mai multe expresii xpath de bază:
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) Conține()
Contains() este o metodă folosită în expresia XPath. Este folosit atunci când valoarea oricărui atribut se modifică dinamic, de exemplu, informațiile de conectare.
Caracteristica de conținut 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 folosind doar valoarea text parțială a 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 „Type” este „submit”, dar utilizând doar valoarea parțială „sub”.
Xpath=//*[contains(@type,'sub')]
Valoarea completă a lui „nume” este „btnLogin”, dar folosind doar valoarea parțială „btn”.
Xpath=//*[contains(@name,'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 „id” începe cu „mesaj”.
Xpath=//*[contains(@id,'message')]
Î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 linkul („aici”), deoarece afișează textul „aici”.
Xpath=//*[contains(text(),'here')]
Xpath=//*[contains(@href,'guru99.com')]
3) Folosind OR & AND
În expresia SAU, sunt utilizate două condiții, dacă prima condiție SAU a doua condiție ar trebui să fie adevărată. Este, de asemenea, aplicabil dacă oricare dintre condiții 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' or @name='btnReset']
Evidențierea ambelor elemente ca element „LOGIN” având atributul „tip” și element „RESET” având 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ă oricare dintre condiții este falsă.
Xpath=//input[@type='submit' and @name='btnLogin']
În expresia de mai jos, evidențiind elementul „LOGIN” deoarece are atât atributul „tip” cât și „nume”.
4) XPath începe cu
XPath începe cu () este o funcție folosită pentru găsirea elementului web a cărui valoare a atributului este modificată la reîmprospătare sau prin alte operații dinamice pe pagina web. În această metodă, textul de pornire al atributului este potrivit 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 se modifică).
De exemplu -: Să presupunem că ID-ul unui anumit element se schimbă dinamic ca:
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 „mesaj” (adică, „ID-ul utilizatorului nu trebuie să fie necompletat” și „Parola nu trebuie să fie necompletat”). În exemplul de mai jos, XPath găsește acele elemente al căror „ID” începe cu „mesaj”.
Xpath=//label[starts-with(@id,'message')]
5) Funcția XPath Text().
Funcția XPath text(). este o funcție încorporată a selenium webdriver care este folosită pentru a localiza elemente pe baza textului unui element web. Ajută la găsirea elementelor text exacte și localizează elementele în setul de noduri de text. Elementele care trebuie localizate trebuie să fie sub formă de șir.
În această expresie, cu funcție text, găsim elementul cu potrivire exactă a textului, așa cum se arată mai jos. În cazul nostru, găsim elementul cu textul „UserID”.
Xpath=//td[text()='UserID']
Metode ale axelor XPath
Aceste metode ale axelor XPath sunt folosite pentru a găsi elementele complexe sau dinamice. Mai jos vom vedea câteva dintre aceste metode.
Pentru a ilustra aceste metode de axe XPath, vom folosi site-ul demonstrativ al bancii Guru99.
1) Urmează
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 prin utilizarea axei „urmăritoare” – parolă, autentificare și butonul de 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-ul î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 special care este elementul casetei de introducere „Parolă”.
2) Strămoș
Axa strămoșilor selectează toate elementele strămoșilor (bunic, părinte etc.) ale nodului curent, așa cum se arată în ecranul de mai jos.
În expresia de mai jos, găsim elementul strămoși al nodului curent (nodul „TESTARE A ÎNTREPRINDERILOR”).
Xpath=//*[text()='Enterprise Testing']//ancestor::div
Există 13 noduri „div” care se potrivesc folosind 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-ul conform cerințelor punând [1], [2]………… și așa mai departe.
3) Copil
Selectează toate elementele copii ale nodului curent (Java) după cum se arată în ecranul de mai jos.
Xpath=//*[@id='java_technologies']//child::li
Există 71 de noduri „li” care se potrivesc folosind 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-ul în funcție de cerință punând [1],[2]…………și așa mai departe.
4) Precedând
Selectați toate nodurile care vin înaintea nodului 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”, adică ID-ul de utilizator și parola element de intrare.
Xpath=//*[@type='submit']//preceding::input
Există 2 noduri „de intrare” care se potrivesc folosind axa „precedentă”. Dacă doriți să vă concentrați asupra unui anumit element, puteți utiliza XPath de mai jos:
Xpath=//*[@type='submit']//preceding::input[1]
Puteți schimba xpath-ul în funcție de cerință punând [1],[2]…………și așa mai departe.
5) Următorul-frate
Selectați următorii frați ai nodului context. Frații sunt la același nivel al nodului curent, așa cum se arată în ecranul de mai jos. Acesta va găsi elementul după nodul curent.
xpath=//*[@type='submit']//following-sibling::input
Potrivirea unui nod de intrare prin utilizarea axei „frate următor”.
6) 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 folosind 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-ul în funcție de cerință punând [1],[2]………… și așa mai departe.
7) Sinele
Selectează nodul curent sau „self” înseamnă că indică nodul în sine, așa cum se arată în ecranul de mai jos.
Potrivirea unui nod folosind axa „self”. Găsește întotdeauna un singur nod, deoarece reprezintă elementul de sine.
Xpath =//*[@type='password']//self::input
8) 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 din elementul curent (elementul cadru „Înconjura corpului principal”), ceea ce înseamnă jos sub nod (nodul copil, nodul nepot, etc.).
Xpath=//*[@id='rt-feature']//descendant::a
Există 12 noduri „link” care se potrivesc folosind axa „descendent”. Dacă doriți să vă concentrați asupra unui anumit element, puteți utiliza XPath de mai jos:
Xpath=//*[@id='rt-feature']//descendant::a[1]
Puteți schimba XPath-ul în funcție de cerință punând [1],[2]………… și așa mai departe.
Rezumat
XPath este necesar pentru a găsi un element pe pagina web și pentru a face o operație pe acel element anume.
- Există două tipuri de seleniu XPath:
- XPath absolut
- XPath relativă
- Axele XPath sunt metodele folosite pentru a găsi elemente dinamice, pe care altfel nu le pot găsi prin metoda XPath normală
- Expresia XPath selectează noduri sau lista de noduri pe baza atributelor precum ID , Nume, Nume clasă etc. din documentul XML .
Verificați și: - Selenium Tutorial pentru începători: Învață WebDriver în 7 zile