Kuinka käyttää XPathia Selenium? Opetusohjelma

Missä XPath on Selenium?

XPath sisään Selenium on XML-polku, jota käytetään navigointiin sivun HTML-rakenteessa. Se on syntaksi tai kieli minkä tahansa web-sivun elementin löytämiseen käyttämällä XML-polkulauseketta. XPathia voidaan käyttää sekä HTML- että XML-dokumenteissa minkä tahansa verkkosivun elementin sijainnin löytämiseen HTML DOM -rakenteen avulla.

In Selenium automaatio, jos elementtejä ei löydy yleisistä paikantimista, kuten id, luokka, nimi jne., XPathia käytetään elementin etsimiseen verkkosivulta.

Tässä opetusohjelmassa opimme Xpath-lausekkeesta ja erilaisista XPath-lausekkeista löytääksemme monimutkaiset tai dynaamiset elementit, joiden attribuutit muuttuvat dynaamisesti päivityksen tai minkä tahansa toiminnon aikana.

XPath-syntaksi

XPath sisältää verkkosivulla olevan elementin polun. Vakio XPath-syntaksi XPathin luomiseen on.

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

Seleenin XPathin perusmuoto selitetään alla kuvakaappauksen kanssa.

XPath-syntaksi
XPathin perusmuoto
  • // : Valitse nykyinen solmu.
  • Merkin nimi: Tietyn solmun tunnistenimi.
  • @: Valitse attribuutti.
  • määrite: Solmun attribuutin nimi.
  • Arvo: Attribuutin arvo.

Elementin löytämiseksi Web-sivuilta tarkasti on olemassa erilaisia ​​paikantimia:

XPath-paikannuslaitteet Löydä erilaisia ​​elementtejä verkkosivulta
ID Elementin etsiminen elementin tunnuksen perusteella
Luokan nimi Elementin etsiminen elementin luokkanimen mukaan
Nimi Elementin etsiminen sen nimen perusteella
Linkitä teksti Elementin löytäminen linkin tekstin perusteella
XPath XPath tarvitaan dynaamisen elementin löytämiseen ja web-sivun eri elementtien välillä kulkemiseen
CSS-polku CSS-polku etsii myös elementtejä, joilla ei ole nimeä, luokkaa tai tunnusta.

X-polun tyypit

XPathia on kahta tyyppiä:

1) Absoluuttinen XPath

2) Suhteellinen XPath

Absoluuttinen XPath

Se on suora tapa löytää elementti, mutta absoluuttisen XPathin haittana on, että jos elementin polulle tehdään muutoksia, XPath epäonnistuu.

XPathin tärkein ominaisuus on, että se alkaa yhdellä vinoviivalla(/), mikä tarkoittaa, että voit valita elementin juurisolmusta.

Alla on esimerkki alla olevassa näytössä näkyvän elementin absoluuttisesta Xpath-lausekkeesta.

HUOMAA: Voit harjoitella seuraavaa XPath-harjoitusta tällä http://demo.guru99.com/test/selenium-xpath.html

Napauta tätä jos video ei ole saatavilla

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

Absoluuttinen XPath

Absoluuttinen XPath

Suhteellinen Xpath

Suhteellinen Xpath alkaa HTML DOM -rakenteen keskeltä. Se alkaa kaksinkertaisella vinoviivalla (//). Se voi etsiä elementtejä missä tahansa verkkosivulla, joten sinun ei tarvitse kirjoittaa pitkää xpath-osoitetta ja voit aloittaa HTML DOM -rakenteen keskeltä. Suhteellinen Xpath on aina parempi, koska se ei ole täydellinen polku juurielementistä.

Alla on esimerkki saman elementin suhteellisesta XPath-lausekkeesta, joka näkyy alla olevassa näytössä. Tämä on yleinen muoto, jota käytetään elementtien etsimiseen XPathin avulla.

Napauta tätä jos video ei ole saatavilla

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

Suhteellinen XPath

Suhteellinen XPath

Mitä ovat XPath-akselit.

XPath Axes etsii eri solmuja XML-dokumentista nykyisestä kontekstisolmusta. XPath-akselit ovat menetelmiä, joilla etsitään dynaamisia elementtejä, jotka eivät muuten ole mahdollisia normaalilla XPath-menetelmällä, jolla ei ole tunnusta, luokkanimeä, nimeä jne. XPath in Selenium sisältää useita menetelmiä, kuten Contains, AND, Absolute XPath ja Suhteellinen XPath dynaamisten elementtien tunnistamiseksi ja paikantamiseksi eri attribuuttien ja ehtojen perusteella.

Axes-menetelmiä käytetään etsimään elementtejä, jotka muuttuvat dynaamisesti päivityksen tai muiden toimintojen yhteydessä. On olemassa muutamia yleisesti käytettyjä akselimenetelmiä Selenium Web-ohjain kuten lapsi, vanhempi, esi-isä, sisarus, edellinen, itse jne.

Kuinka kirjoittaa Dynamic XPath sisään Selenium web-ajuri

1) Perus XPath

XPath-lauseke valitse solmut tai lista solmuista attribuuttien perusteella, kuten ID, nimi, luokkanimijne. XML-dokumentista alla olevan kuvan mukaisesti.

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

Tässä linkki sivulle pääsemiseksi http://demo.guru99.com/test/selenium-xpath.html

Perus XPath

Perus XPath

Muutamia perus xpath-lausekkeita:

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='//guru99.com/images/home/java.png']

2) Sisältää ()

Contains() on XPath-lausekkeessa käytetty menetelmä. Sitä käytetään, kun minkä tahansa määritteen arvo muuttuu dynaamisesti, esimerkiksi kirjautumistiedot.

Sisältöominaisuus pystyy löytämään elementin osittaisella tekstillä, kuten alla olevassa XPath-esimerkissä näkyy.

Tässä esimerkissä yritimme tunnistaa elementin käyttämällä vain attribuutin osittaista tekstiarvoa. Alla olevassa XPath-lausekkeessa käytetään osittaista arvoa "sub" lähetyspainikkeen tilalla. Voidaan havaita, että elementti löytyy onnistuneesti.

Tyypin täydellinen arvo on 'submit', mutta käytetään vain osittaista arvoa 'sub'.

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

Nimen täydellinen arvo on "btnLogin", mutta siinä käytetään vain osittaista arvoa "btn".

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

Yllä olevassa lausekkeessa olemme ottaneet "name" attribuutiksi ja "btn" osittaiseksi arvoksi, kuten alla olevassa kuvakaappauksessa näkyy. Tämä löytää 2 elementtiä (LOGIN & RESET), koska niiden "name"-attribuutti alkaa "btn".

Sisältää()

Vastaavasti alla olevassa lausekkeessa olemme ottaneet "id" attribuutiksi ja "viesti" osittaiseksi arvoksi. Tämä löytää 2 elementtiä ("Käyttäjätunnus ei saa olla tyhjä" & "Salasana ei saa olla tyhjä"), koska sen id-attribuutti alkaa sanalla "message".

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

Sisältää()

Alla olevassa lausekkeessa olemme ottaneet linkin "tekstin" attribuutiksi ja "tässä" osittaiseksi arvoksi, kuten alla olevassa kuvakaappauksessa näkyy. Tämä löytää linkin ("täällä"), koska se näyttää tekstin "täällä".

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

Sisältää()

3) OR & AND -näppäimillä

TAI-lausekkeessa käytetään kahta ehtoa, onko 1. ehdon TAI 2. ehdon oltava tosi. Sitä voidaan soveltaa myös, jos jokin ehdoista on totta tai ehkä molemmat. Tarkoittaa, että minkä tahansa ehdon tulee olla tosi elementin löytämiseksi.

Alla olevassa XPath-lausekkeessa se tunnistaa elementit, joiden yksi tai molemmat ehdot ovat tosi.

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

Korostetaan molemmat elementit "LOGIN" -elementiksi, jolla on attribuutti "tyyppi", ja "RESET" -elementiksi, jolla on attribuutti "nimi".

Käyttämällä OR & AND

AND-lausekkeessa käytetään kahta ehtoa, molempien ehtojen tulee olla tosia elementin löytämiseksi. Se ei löydä elementtiä, jos jokin ehto on epätosi.

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

Alla olevassa lausekkeessa korostetaan "LOGIN"-elementti, koska sillä on sekä attribuutti "tyyppi" että "nimi".

Käyttämällä OR & AND

4) XPat alkaa

XPath alkaa kirjaimella () on funktio, jota käytetään etsimään verkkoelementti, jonka attribuutin arvo muuttuu päivityksen tai muiden verkkosivun dynaamisten toimintojen yhteydessä. Tässä menetelmässä määritteen aloitusteksti sovitetaan sen elementin löytämiseksi, jonka attribuutin arvo muuttuu dynaamisesti. Voit myös löytää elementtejä, joiden attribuuttiarvo on staattinen (ei muutoksia).

Esimerkki -: Oletetaan, että tietyn elementin tunnus muuttuu dynaamisesti, kuten:

Id=” message12″

Id=” message345″

Id=” message8769″

ja niin edelleen.. mutta alkuperäinen teksti on sama. Tässä tapauksessa käytämme Start-with -lauseketta.

Alla olevassa lausekkeessa on kaksi elementtiä, joiden tunnus alkaa "viesti" (eli "Käyttäjätunnus ei saa olla tyhjä" & "Salasana ei saa olla tyhjä"). Alla olevassa esimerkissä XPath löytää elementit, joiden 'ID' alkaa sanalla 'message'.

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

Xpath alkaa

5) XPath Text() -funktio

- XPath text() -funktio on seleeni-webdriverin sisäänrakennettu toiminto, jota käytetään elementtien paikantamiseen web-elementin tekstin perusteella. Se auttaa löytämään tarkat tekstielementit ja paikantaa elementit tekstisolmujoukosta. Sijoitettavien elementtien tulee olla merkkijonomuodossa.

Tässä lausekkeessa tekstifunktiolla löydämme elementin, jolla on tarkka tekstivastaavuus, kuten alla on esitetty. Meidän tapauksessamme löydämme elementin tekstillä "UserID".

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

XPath Text() -funktio

XPath-akselien menetelmät

Näitä XPath-akselimenetelmiä käytetään kompleksisten tai dynaamisten elementtien löytämiseen. Alla näemme joitain näistä menetelmistä.

Näiden XPath-akselien menetelmän havainnollistamiseen käytämme Guru99-pankin demosivustoa.

1) Seurataan

Valitsee kaikki elementit nykyisen solmun ( ) asiakirjasta [ UserID -syöttöruutu on nykyinen solmu] alla olevan näytön mukaisesti.

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

Jälkeen

On 3 "syöttö"-solmua, jotka vastaavat "seuraavaa" akselia - salasanaa, sisäänkirjautumis- ja nollauspainiketta. Jos haluat keskittyä johonkin tiettyyn elementtiin, voit käyttää alla olevaa XPath-menetelmää:

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

Voit muuttaa XPathia vaatimuksen mukaan asettamalla [1],[2]……………………………………………………………

Kun syöte on '1', alla oleva kuvakaappaus löytää tietyn solmun, joka on 'Salasana'-syöttöruutuelementti.

Jälkeen

2) Esi-isä

Esi-akseli valitsee kaikki nykyisen solmun esi-isäelementit (isovanhempi, vanhempi jne.), kuten alla olevassa näytössä näkyy.

Alla olevasta lausekkeesta löydämme nykyisen solmun ("ENTERPRISE TESTING" -solmun) esivanhemmat.

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

kantaisä

On olemassa 13 "div"-solmua, jotka sopivat "esi-isä"-akselilla. Jos haluat keskittyä johonkin tiettyyn elementtiin, voit käyttää alla olevaa XPathia, jossa muutat numeroita 1, 2 tarpeidesi mukaan:

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

Voit muuttaa XPathia vaatimuksen mukaan asettamalla [1], [2]………………………………………………

3) Lapsi

Valitsee kaikki nykyisen solmun lapsielementit (Java), kuten alla olevassa näytössä näkyy.

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

Lapsi

On 71 "li"-solmua, jotka sopivat "lapsi"-akselilla. Jos haluat keskittyä johonkin tiettyyn elementtiin, voit käyttää alla olevaa xpath:ta:

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

Voit muuttaa xpath-osoitetta vaatimuksen mukaan asettamalla [1],[2]…………………………………………

4) Edellinen

Valitse kaikki solmut, jotka tulevat ennen nykyistä solmua alla olevan näytön mukaisesti.

Alla olevassa lausekkeessa se tunnistaa kaikki syöttöelementit ennen “LOGIN”-painiketta eli Käyttäjätunnus ja salasana syöttöelementti.

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

edeltävä

On olemassa 2 "tulo"-solmua, jotka sopivat "edellisellä" akselilla. Jos haluat keskittyä johonkin tiettyyn elementtiin, voit käyttää alla olevaa XPathia:

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

Voit muuttaa xpath-osoitetta vaatimuksen mukaan asettamalla [1],[2]…………………………………………

5) Seuraava sisarus

Valitse seuraavat kontekstisolmun sisarukset. Sisarukset ovat nykyisen solmun tasolla, kuten alla olevassa näytössä näkyy. Se löytää elementin nykyisen solmun jälkeen.

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

Seuraava-sisarus

Yksi syötesolmu vastaa "seuraava sisarus" -akselia.

6) Vanhempi

Valitsee nykyisen solmun ylätason alla olevan näytön mukaisesti.

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

Vanhempi

On olemassa 65 "div"-solmua, jotka sopivat "emo"-akselilla. Jos haluat keskittyä johonkin tiettyyn elementtiin, voit käyttää alla olevaa XPathia:

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

Voit muuttaa XPathia vaatimuksen mukaan asettamalla [1],[2]……………………………………………………………

7) Itse

Valitsee nykyisen solmun tai "itse" tarkoittaa, että se osoittaa itse solmun alla olevan näytön mukaisesti.

Itse

Yhden solmun sovitus "itse"-akselilla. Se löytää aina vain yhden solmun, koska se edustaa itseelementtiä.

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

8) Jälkeläinen

Valitsee nykyisen solmun jälkeläiset alla olevan näytön mukaisesti.

Alla olevassa lausekkeessa se tunnistaa kaikki nykyisen elementin jälkeläiset ('Main body surround' -kehyselementti), mikä tarkoittaa alas solmun alla (lapsisolmu , lapsenlapsisolmu jne.).

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

jälkeläinen

On 12 "linkki" solmua, jotka vastaavat "jälkeläisakselilla". Jos haluat keskittyä johonkin tiettyyn elementtiin, voit käyttää alla olevaa XPathia:

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

Voit muuttaa XPathia vaatimuksen mukaan asettamalla [1],[2]……………………………………………………………

Yhteenveto

XPathia vaaditaan elementin löytämiseksi verkkosivulta, jotta se voi suorittaa toiminnon kyseiselle elementille.

  • Seleeni XPathia on kahta tyyppiä:
    • Absoluuttinen XPath
    • Suhteellinen XPath
  • XPath-akselit ovat menetelmiä, joilla etsitään dynaamisia elementtejä, joita ei muuten voi löytää normaalilla XPath-menetelmällä
  • XPath-lauseke valitse solmut tai solmuluettelo XML-dokumentin attribuuttien, kuten ID , Name, Classname jne., perusteella.

Tarkista myös: - Selenium Opetusohjelma aloittelijoille: Opi WebDriver 7 päivässä