XPath Selenium WebDriver -oppaassa: Kuinka löytää XPath?

Sisällysluettelo:

Anonim

Selenium-automaatiossa, jos elementit eivät löydy yleisistä paikannuslaitteista, kuten tunnus, luokka, nimi jne., XPathia käytetään elementin löytämiseen verkkosivulta.

Tässä opetusohjelmassa opit xpathista ja erilaisista XPath-lausekkeista löytääksemme monimutkaiset tai dynaamiset elementit, joiden attribuutit muuttuvat dynaamisesti päivityksen tai minkä tahansa toiminnan yhteydessä.

Tässä XPath-opetusohjelmassa opit-

  • Mikä on XPath?
  • X-polun tyypit
    • Absoluuttinen XPath
    • Suhteellinen XPath
  • Perus XPath
  • Sisältää()
  • OR- ja AND-painikkeiden käyttö
  • Alkaa-toiminnolla
  • Teksti()
  • XPath-akselimenetelmät
    • Seurata
    • Esivanhempi
    • Lapsi
    • Edeltävä
    • Seuraaja-sisarus
    • Vanhempi
    • Itse
    • Jälkeläinen

Mikä on XPath seleenissä?

Seleenissä oleva XPath on XML-polku, jota käytetään siirtymiseen sivun HTML-rakenteen läpi. Se on syntaksi tai kieli minkä tahansa elementin löytämiseksi verkkosivulta XML-polkulauseketta käyttäen. XPathia voidaan käyttää sekä HTML- että XML-asiakirjoihin minkä tahansa verkkosivun elementin sijainnin löytämiseen HTML DOM -rakenteen avulla.

Seleenin XPath-perusmuoto selitetään alla kuvakaappauksella.

XPathin perusmuoto

Syntaksi XPath-seleenille:

XPath sisältää verkkosivulla olevan elementin polun. Normaali XPath-syntaksin luominen XPath on.

Xpath = // tagname [@ attribute = 'arvo']
  • //: Valitse nykyinen solmu.
  • Tagname: tietyn solmun tagname.
  • @: Valitse attribuutti.
  • Attribuutti: Solmun attribuutin nimi.
  • Arvo: Määritteen arvo.

Elementin löytämiseksi verkkosivuilta tarkasti löytyy erityyppisiä paikannimia:

XPath-paikannuslaitteet Löydä erilaisia ​​elementtejä verkkosivulta
Henkilötunnus Elementin etsiminen elementin tunnuksen perusteella
Luokan nimi Elementin etsiminen elementin luokan nimen mukaan
Nimi Elementin etsiminen sen nimen perusteella
Linkkiteksti Elementin löytäminen linkin tekstin perusteella
XPath XPath tarvitaan dynaamisen elementin löytämiseen ja siirtymiseen verkkosivun eri elementtien välillä
CSS-polku CSS-polku etsii myös elementtejä, joilla ei ole nimeä, luokkaa tai tunnusta.

X-polun tyypit

XPath-polkuja 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 keskeinen ominaisuus on, että se alkaa yhdellä eteenpäin viivalla (/), mikä tarkoittaa, että voit valita elementin juurisolmusta.

Alla on esimerkki alla olevan ruudun elementin absoluuttisesta xpath-lausekkeesta.

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

Napsauta tätä, jos video ei ole käytettävissä

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

Suhteellinen Xpath:

Suhteellinen Xpath alkaa HTML DOM -rakenteen keskeltä. Se alkaa kaksinkertaisella kauttaviivalla (//). Se voi etsiä elementtejä mistä tahansa verkkosivulta, joten sinun ei tarvitse kirjoittaa pitkää xpathia ja voit aloittaa HTML DOM -rakenteen keskeltä. Suhteellinen Xpath on aina suositeltava, 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 elementin etsimiseen XPathin avulla.

Napsauta tätä, jos video ei ole käytettävissä

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

Suhteellinen XPath

Mitä ovat XPath-akselit.

XPath-akselit etsivät eri solmuja XML-dokumentista nykyisestä kontekstisolmusta. XPath-akselit ovat menetelmiä dynaamisten elementtien löytämiseen, mikä ei muuten ole mahdollista normaalilla XPath-menetelmällä, jolla ei ole tunnusta, luokan nimeä, nimeä jne.

Akselimenetelmiä käytetään sellaisten elementtien löytämiseen, jotka muuttuvat dynaamisesti päivityksen tai muun toiminnan yhteydessä. Selenium Webdriverissa käytetään muutamia akselimenetelmiä, kuten lapsi, vanhempi, esi-isä, sisarus, edeltävä, itse jne.

XPathin käyttö monimutkaisissa ja dynaamisissa elementeissä seleenissä

1) Perus XPath:

XPath-lauseke valitse solmut tai solmujen luettelo XML-asiakirjan määritteiden, kuten ID, nimi, luokan nimi jne. , Perusteella alla esitetyllä tavalla.

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

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

Perus XPath

Joitakin muita xpath-lausekkeita:

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

2) Sisältää ():

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

Sisällytä-ominaisuudella on kyky löytää elementti osittaisella tekstillä, kuten alla olevassa XPath-esimerkissä on esitetty.

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

Tyypin täydellinen arvo on 'lähetä', mutta vain osittainen arvo 'ala'.

Xpath = // * [sisältää (@ type, 'sub')] 

Nimen 'täydellinen arvo on' btnLogin ', mutta vain osittainen arvo' btn '.

Xpath = // * [sisältää (@ nimi, 'btn')]

Edellä olevassa lausekkeessa olemme ottaneet 'nimen' attribuuttina ja 'btn': n osittaisena arvona alla olevan kuvakaappauksen mukaisesti. Tämä löytää 2 elementtiä (LOGIN & RESET), koska niiden 'name' -määritteen alussa on 'btn'.

Samoin olemme ottaneet alla olevassa lausekkeessa 'id' attribuuttina ja 'message' osittaisena arvona. Tämä löytää 2 elementtiä ('User-ID ei saa olla tyhjä' ja 'Salasana ei saa olla tyhjä'), koska sen 'name' -määritteen alussa on 'message'.

Xpath = // * [sisältää (@ id, 'viesti')] 

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

Xpath = // * [sisältää (teksti (), 'täällä')]Xpath = // * [sisältää (@ href, 'guru99.com')] 

3) OR & AND: n käyttö:

OR-lausekkeessa käytetään kahta ehtoa, pitäisikö 1. ehdon TAI 2. ehdon olla totta. Sitä sovelletaan myös, jos jokin ehto on totta tai ehkä molemmat. Tarkoittaa, että jonkin ehdon on oltava totta elementin löytämiseksi.

Alla olevassa XPath-lausekkeessa se tunnistaa elementit, joiden yksittäiset tai molemmat ehdot ovat totta.

Xpath = // * [@ type = 'lähetä' tai @ name = 'btnReset']

Korostetaan molemmat elementit "LOGIN" -elementtinä, jolla on attribuutti "type", ja "RESET" -elementillä, jolla on attribuutti "name".

AND-lausekkeessa käytetään kahta ehtoa, molempien ehtojen tulisi olla totta elementin löytämiseksi. Se ei löydä elementtiä, jos jokin ehto on väärä.

Xpath = // input [@ type = 'lähetä' ja @ name = 'btnLogin']

Korosta alla olevasta lausekkeesta LOGIN-elementti, koska sillä on sekä attribuutti tyyppi että nimi.

4) Xpath alkaa

XPath starts-with () on toiminto, jota käytetään etsimään verkkoelementtiä, jonka määritearvoa muutetaan päivityksen yhteydessä tai muilla verkkosivun dynaamisilla operaatioilla. Tässä menetelmässä määritteen alkuteksti sovitetaan etsimään elementti, jonka attribuutin arvo muuttuu dynaamisesti. Löydät myös elementtejä, joiden määritearvo on staattinen (ei muutoksia).

Esimerkiksi -: 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" (ts. "User-ID ei saa olla tyhjä" ja "Salasana ei saa olla tyhjä"). Alla olevassa esimerkissä XPath löytää ne elementit, joiden tunnus alkaa sanalla.

Xpath = // tunniste [alkaa-kanssa (@ id, 'viesti')]

5) XPath Text () -toiminto

XPath teksti () funktio on sisäänrakennettu toiminto seleenin webdriver, jota käytetään paikantamaan elementtien perusteella teksti rainan elementin. Se auttaa löytämään tarkat tekstielementit ja etsii elementit tekstisolmujen joukosta. Elementtien tulee olla merkkijonossa.

Tässä lausekkeessa, jossa on tekstitoiminto, löydämme elementin, jolla on tarkka tekstinvastaavuus, kuten alla on esitetty. Meidän tapauksessamme löydämme elementin, jossa on teksti "UserID".

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

6) XPath-akselimenetelmät:

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

Näiden XPath-akselimenetelmien havainnollistamiseen käytämme Guru99-pankin demosivustoa.

a) Seuraavat:

Valitsee kaikki nykyisen solmun () asiakirjan elementit () [UserID-kenttä on nykyinen solmu], kuten alla olevassa näytössä näkyy.

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

On 3 "input" -solmua, jotka sopivat käyttämällä "seuraava" -aksisalasanaa, kirjautumis- ja nollauspainiketta. Jos haluat keskittyä johonkin tiettyyn elementtiin, voit käyttää seuraavaa XPath-menetelmää:

Xpath = // * [@ type = 'text'] // seuraava :: syöttö [1]

Voit muuttaa XPath-vaatimusta vaatimusten mukaan asettamalla [1], [2]

… ja niin edelleen.

Kun syötteen arvo on 1, alla oleva kuvakaappaus löytää tietyn solmun, joka on Salasana-syöttökentän elementti.

b) esi-isä:

Esi-akseli valitsee kaikki nykyisen solmun esi-isät (isovanhemmat, vanhemmat jne.) Alla olevan näytön mukaisesti.

Alla olevasta lausekkeesta löydämme nykyisen solmun esi-elementit ("YRITYSTESTI" -solmu).

Xpath = // * [text () = 'Yritystestaus'] // esi-isä :: div

On 13 "div" -solmua, jotka vastaavat "esi-akselia". Jos haluat keskittyä mihinkään tiettyyn elementtiin, voit käyttää alla olevaa XPath-polkua, jossa muutat numeroa 1, 2 vaatimuksesi mukaan:

Xpath = // * [text () = 'Yritystestaus'] // esi-isä :: div [1]

Voit muuttaa XPath-vaatimusta vaatimusten mukaan asettamalla [1], [2]

… ja niin edelleen.

c) lapsi:

Valitsee kaikki nykyisen solmun (Java) kaikki alielementit alla olevan näytön mukaisesti.

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

On 71 "li" -solmua, jotka vastaavat "lapsi" -akselia. Jos haluat keskittyä mihinkään tiettyyn elementtiin, voit käyttää alla olevaa xpath:

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

Voit muuttaa xpath-vaatimusta asettamalla [1], [2]

… ja niin edelleen.

d) Edeltävä:

Valitse kaikki nykyisen solmun edellä olevat solmut alla olevan näytön mukaisesti.

Alla olevassa lausekkeessa se tunnistaa kaikki "LOGIN" -painiketta edeltävät syöttöelementit, jotka ovat Userid ja salasana .

Xpath = // * [@ type = 'lähetä'] // edeltävä :: input

On 2 "syöttö" -solmua, jotka vastaavat "edeltävää" akselia. Jos haluat keskittyä mihinkään tiettyyn elementtiin, voit käyttää alla olevaa XPath-tiedostoa:

Xpath = // * [@ type = 'lähetä'] // edellinen :: input [1]

Voit muuttaa xpath-vaatimusta asettamalla [1], [2]

… ja niin edelleen.

e) Sisaruksen seuraaja:

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

 xpath = // * [@ type = 'lähetä'] // follow-sibling :: input

Yksi sisääntulosolmu täsmää käyttämällä "seuraaja-sisarus" -akselia.

f) Vanhempi:

Valitsee nykyisen solmun vanhemman alla olevan näytön mukaisesti.

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

"65" "div" -solmua on yhteensopivia "akseli" -akselin avulla. Jos haluat keskittyä mihinkään tiettyyn elementtiin, voit käyttää alla olevaa XPath-tiedostoa:

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

Voit muuttaa XPath-vaatimusta vaatimusten mukaan asettamalla [1], [2]

… ja niin edelleen.

g) Itse:

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

Yksi solmu täsmää käyttämällä "itse" -akselia. Se löytää aina vain yhden solmun, koska se edustaa itseelementtiä.

Xpath = // * [@ type = 'password'] // itse :: syöte

h) jälkeläinen:

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

Alla olevassa lausekkeessa se identifioi kaikki nykyisen elementin jälkeläiset ('Body body surround' -kehyselementti), mikä tarkoittaa solmun alla (lapsisolmu, lapsenlapsen solmu jne.).

Xpath = // * [@ id = 'rt-feature'] // jälkeläinen :: a

On 12 "linkki" -solmua, jotka vastaavat "jälkeläisakselia". Jos haluat keskittyä mihinkään tiettyyn elementtiin, voit käyttää alla olevaa XPath-tiedostoa:

Xpath = // * [@ id = 'rt-feature'] // jälkeläinen :: a [1]

Voit muuttaa XPath-vaatimusta vaatimusten mukaan asettamalla [1], [2]

… ja niin edelleen.

Yhteenveto:

XPath: n on löydettävä elementti verkkosivulta, jotta se voi tehdä toiminnon kyseiselle elementille.

  • Seleeniä XPath on kahta tyyppiä:
    • Absoluuttinen XPath
    • Suhteellinen XPath
  • XPath-akselit ovat menetelmiä, joita käytetään dynaamisten elementtien löytämiseen, joita muuten ei voida löytää normaalilla XPath-menetelmällä
  • XPath-lauseke valitse solmut tai solmujen luettelo XML-asiakirjan määritteiden, kuten ID, nimi, luokan nimi jne., Perusteella.