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.
- // : 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]
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]
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
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".
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')]
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')]
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".
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".
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')]
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-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
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.
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
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
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
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
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
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.
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
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ä