XPath selēna WebDriver apmācībā: kā atrast XPath?

Satura rādītājs:

Anonim

Ja selēna automatizācijā elementus neatrod vispārējie lokatori, piemēram, id, klase, nosaukums utt., Tad, lai atrastu elementu tīmekļa lapā, tiek izmantots XPath.

Šajā apmācībā mēs uzzināsim par xpath un dažādām XPath izteiksmēm, lai atrastu sarežģītos vai dinamiskos elementus, kuru atribūti dinamiski mainās atsvaidzināšanas vai jebkuru darbību laikā.

Šajā XPath apmācībā jūs uzzināsiet

  • Kas ir XPath?
  • X ceļa veidi
    • Absolūtais XPath
    • Relatīvais XPath
  • Pamata XPath
  • Satur ()
  • Izmantojot OR & AND
  • Sāk ar funkciju
  • Teksts ()
  • XPath asu metodes
    • Sekojošs
    • Sencis
    • Bērns
    • Iepriekšējais
    • Sekojošais brālis
    • Vecāks
    • Pats
    • Pēcnācējs

Kas ir XPath selēnā?

XPath Selenium ir XML ceļš, ko izmanto, lai pārvietotos pa lapas HTML struktūru. Tā ir sintakse vai valoda jebkura elementa atrašanai tīmekļa lapā, izmantojot XML ceļa izteiksmi. XPath var izmantot gan HTML, gan XML dokumentiem, lai atrastu jebkura tīmekļa vietnes elementa atrašanās vietu, izmantojot HTML DOM struktūru.

XPath formāts selenā ir paskaidrots zemāk ar ekrānuzņēmumu.

XPath pamatformāts

XPath selēna sintakse:

XPath satur tīmekļa lapā esošā elementa ceļu. Standarta XPath sintakse XPath izveidei ir.

Xpath = // tagname [@ attribute = 'value']
  • //: atlasiet pašreizējo mezglu.
  • Tagname: konkrētā mezgla tagname.
  • @: Atlasiet atribūtu.
  • Atribūts: mezgla atribūta nosaukums.
  • Vērtība: atribūta vērtība.

Lai precīzi atrastu elementu tīmekļa lapās, ir dažādi lokatoru veidi:

XPath lokatori Tīmekļa lapā atrodiet dažādus elementus
ID Lai atrastu elementu pēc elementa ID
Klases nosaukums Lai atrastu elementu pēc elementa klases nosaukuma
Nosaukums Lai atrastu elementu pēc elementa nosaukuma
Saites teksts Lai atrastu elementu pēc saites teksta
XPath XPath nepieciešams, lai atrastu dinamisko elementu un pārvietotos starp dažādiem tīmekļa lapas elementiem
CSS ceļš CSS ceļš atrod arī elementus, kuriem nav nosaukuma, klases vai ID.

X ceļa veidi

Ir divi XPath veidi:

1) Absolūtais XPath

2) Relatīvais XPath

Absolūtais XPath:

Tas ir tiešs veids, kā atrast elementu, bet absolūtā XPath trūkums ir tāds, ka, ja elementa ceļā ir veiktas izmaiņas, tad XPath neizdodas.

XPath galvenā iezīme ir tā, ka tā sākas ar vienu priekšu slīpsvītru (/), kas nozīmē, ka elementu varat izvēlēties no saknes mezgla.

Tālāk ir redzams zemāk redzamajā ekrānā redzamā elementa absolūtās xpath izteiksmes piemērs.

PIEZĪME. Šajā vietnē http://demo.guru99.com/test/selenium-xpath.html varat praktizēt šo XPath vingrinājumu.

Noklikšķiniet šeit, ja videoklips nav pieejams

Absolūtais 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]

Absolūtais XPath

Relatīvais Xpath:

Relatīvais Xpath sākas no HTML DOM struktūras vidusdaļas. Tas sākas ar dubultu slīpsvītru uz priekšu (//). Tas var meklēt elementus jebkurā tīmekļa vietnē, tas nozīmē, ka nav nepieciešams rakstīt garu xpath, un jūs varat sākt no HTML DOM struktūras vidus. Vienmēr priekšroka tiek dota relatīvajam Xpath, jo tas nav pilnīgs ceļš no saknes elementa.

Zemāk ir redzams tā paša elementa relatīvās XPath izteiksmes piemērs, kas parādīts zemāk esošajā ekrānā. Šis ir parastais formāts, ko izmanto elementa atrašanai pēc XPath.

Noklikšķiniet šeit, ja videoklips nav pieejams

Relatīvais XPath: // div [@ class = 'Featured-box cloumnsize1'] // h4 [1] // b [1]

Relatīvais XPath

Kas ir XPath asis.

XPath asis meklē dažādus mezglus XML dokumentā no pašreizējā konteksta mezgla. XPath Axes ir metodes, ko izmanto, lai atrastu dinamiskos elementus, kas citādi nav iespējams, izmantojot parasto XPath metodi, kurai nav ID, klases nosaukuma, nosaukuma utt.

Cirvju metodes tiek izmantotas, lai atrastu tos elementus, kuri dinamiski mainās, veicot atsvaidzināšanu vai citas darbības. Selēna tīmekļa draiverī parasti tiek izmantotas dažas asu metodes, piemēram, bērns, vecāks, sencis, brālis, māsa, iepriekšējais, pats utt.

Izmantojot XPath apstrādes sarežģītus un dinamiskus elementus selēnā

1) pamata XPath:

XPath izteiksme no XML dokumenta atlasa mezglus vai mezglu sarakstu, pamatojoties uz tādiem atribūtiem kā ID, nosaukums, klases nosaukums utt., Kā parādīts tālāk.

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

Šeit ir saite, lai piekļūtu lapai http://demo.guru99.com/test/selenium-xpath.html

Pamata XPath

Vēl daži xpath pamata izteicieni:

Xpath = // ievade [@ type = 'text']Xpath = // iezīme [@ id = 'message23']Xpath = // ievade [@ value = 'RESET']Xpath = // * [@ class = 'barone']Xpath = // a [@ href = 'http: //demo.guru99.com/']Xpath = //img[@src='//cdn.guru99.com/images/home/java.png.webp ']

2) Satur ():

Contains () ir metode, ko izmanto XPath izteiksmē. To lieto, ja jebkura atribūta vērtība dinamiski mainās, piemēram, pieteikšanās informācija.

Ietveršanas funkcijai ir iespēja atrast elementu ar daļēju tekstu, kā parādīts zemāk XPath piemērā.

Šajā piemērā mēs mēģinājām identificēt elementu, izmantojot tikai daļēju atribūta teksta vērtību. Zemāk esošajā XPath izteiksmē iesniegšanas pogas vietā tiek izmantota daļēja vērtība “sub”. Var novērot, ka elements ir veiksmīgi atrasts.

Pilnīga “Type” vērtība ir “submit”, bet tiek izmantota tikai daļēja vērtība “sub”.

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

Pilnīga vārda “name” vērtība ir “btnLogin”, bet tiek izmantota tikai daļēja vērtība “btn”.

Xpath = // * [satur (@ nosaukums, 'btn')]

Iepriekš minētajā izteiksmē mēs esam ņēmuši vārdu “nosaukums” kā atribūtu un “btn” kā daļēju vērtību, kā parādīts zemāk redzamajā ekrānuzņēmumā. Tas atradīs 2 elementus (LOGIN & RESET), jo to atribūts “name” sākas ar “btn”.

Līdzīgi zemāk esošajā izteiksmē mēs kā atribūtu esam lietojuši “id” un kā daļēju vērtību “message”. Tas atradīs 2 elementus (“User-ID nedrīkst būt tukšs” un “Parole nedrīkst būt tukša”), jo tā “name” atribūts sākas ar “message”.

Xpath = // * [satur (@ id, 'ziņojums')] 

Zemāk esošajā izteiksmē saites "tekstu" esam izmantojuši kā atribūtu un "šeit" kā daļēju vērtību, kā parādīts zemāk esošajā ekrānuzņēmumā. Tas atradīs saiti (“šeit”), jo tajā tiks parādīts teksts “šeit”.

Xpath = // * [satur (text (), 'šeit')]Xpath = // * [satur (@ href, 'guru99.com')] 

3) Izmantojot OR & AND:

Vārdā OR tiek izmantoti divi nosacījumi, neatkarīgi no tā, vai 1. nosacījumam VAI 2. nosacījumam jābūt patiesam. Tas ir piemērojams arī tad, ja kāds no nosacījumiem ir patiess vai varbūt abi. Nozīmē, ka elementa atrašanai jābūt vienam nosacījumam.

Zemāk esošajā XPath izteiksmē tas identificē elementus, kuru viens vai abi nosacījumi ir patiesi.

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

Izceļot abus elementus kā “LOGIN” elementu ar atribūtu “type” un “RESET” ar atribūtu “name”.

AND izteiksmē tiek izmantoti divi nosacījumi, lai atrastu elementu, abiem nosacījumiem jābūt patiesiem. Tas nespēj atrast elementu, ja kāds no nosacījumiem ir nepatiess.

Xpath = // ievade [@ type = 'submit' un @ name = 'btnLogin']

Zemāk izteiksmē izceļot elementu “LOGIN”, jo tam ir gan atribūts “type”, gan nosaukums.

4) Xpath sākas ar

XPath starts-with () ir funkcija, ko izmanto, lai atrastu tīmekļa elementu, kura atribūta vērtība tiek mainīta, atsvaidzinot vai veicot citas dinamiskas operācijas vietnē. Šajā metodē atribūta sākuma teksts tiek saskaņots, lai atrastu elementu, kura atribūta vērtība dinamiski mainās. Varat arī atrast elementus, kuru atribūta vērtība ir statiska (nevis mainās).

Piemēram - pieņemsim, ka konkrēta elementa ID dinamiski mainās, piemēram:

Id = "message12"

Id = "message345"

Id = "message8769"

un tā tālāk ... bet sākotnējais teksts ir vienāds. Šajā gadījumā mēs izmantojam Start-with izteicienu.

Zemāk esošajā izteiksmē ir divi elementi, kuru ID sākas ar “ziņojumu” (ti, “User-ID nedrīkst būt tukšs” un “Parole nedrīkst būt tukša”). Zemāk esošajā piemērā XPath atrod tos elementus, kuru “ID” sākas ar “message”.

Xpath = // iezīme [sākas ar (@ id, 'ziņojums')]

5) XPath teksta () funkcija

Funkcija XPath text () ir iebūvēta selēna tīmekļa draivera funkcija, kuru izmanto, lai atrastu elementus, pamatojoties uz tīmekļa elementa tekstu. Tas palīdz atrast precīzus teksta elementus un atrod elementus teksta mezglu komplektā. Atrodamajiem elementiem jābūt virknes formā.

Šajā izteiksmē ar teksta funkciju mēs atrodam elementu ar precīzu teksta atbilstību, kā parādīts zemāk. Mūsu gadījumā mēs atrodam elementu ar tekstu "UserID".

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

6) XPath asu metodes:

Šīs XPath asu metodes tiek izmantotas, lai atrastu sarežģītus vai dinamiskus elementus. Zemāk mēs redzēsim dažas no šīm metodēm.

Lai ilustrētu šīs XPath asu metodi, mēs izmantosim Guru99 bankas demonstrācijas vietni.

a) seko:

Atlasa visus elementus pašreizējā mezgla dokumentā () [UserID ievades lodziņš ir pašreizējais mezgls], kā parādīts zemāk redzamajā ekrānā.

Xpath = // * [@ type = 'text'] // seko :: ievadei

Ir 3 "ievades" mezgli, kas atbilst, izmantojot "sekojošo" paroli, pieteikšanās un atiestatīšanas pogu. Ja vēlaties koncentrēties uz kādu konkrētu elementu, varat izmantot šo XPath metodi:

Xpath = // * [@ type = 'text'] // seko :: ievade [1]

XPath var mainīt atbilstoši prasībām, ieliekot [1], [2]

… un tā tālāk.

Ja ievade ir “1”, zemāk redzamajā ekrānuzņēmumā tiek atrasts konkrētais mezgls, kas ir “Password” ievades lodziņa elements.

b) sencis:

Senču ass atlasa visus pašreizējā mezgla senču elementus (vecvecākus, vecākus utt.), Kā parādīts zemāk redzamajā ekrānā.

Zemāk esošajā izteiksmē mēs atrodam pašreizējā mezgla senču elementu (mezgls "ENTERPRISE TESTING").

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

Ir 13 “div” mezgli, kas atbilst, izmantojot “priekšteča” asi. Ja vēlaties koncentrēties uz kādu konkrētu elementu, varat izmantot zemāk redzamo XPath, kur maināt skaitli 1, 2 atbilstoši jūsu prasībām:

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

XPath var mainīt atbilstoši prasībām, ieliekot [1], [2]

… un tā tālāk.

c) bērns:

Atlasa visus pašreizējā mezgla (Java) bērnu elementus, kā parādīts zemāk redzamajā ekrānā.

Xpath = // * [@ id = 'java_technologies'] // bērns :: li

Ir 71 "li" mezgls, kas atbilst, izmantojot ass "bērns". Ja vēlaties koncentrēties uz kādu konkrētu elementu, varat izmantot šo xpath:

Xpath = // * [@ id = 'java_technologies'] // bērns :: li [1]

Jūs varat mainīt xpath atbilstoši prasībām, ievietojot [1], [2]

… un tā tālāk.

d) Iepriekš:

Atlasiet visus mezglus, kas atrodas pirms pašreizējā mezgla, kā parādīts zemāk redzamajā ekrānā.

Zemāk esošajā izteiksmē tas identificē visus ievades elementus pirms pogas "LOGIN", kas ir Userid un paroles ievades elements.

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

Ir 2 “ievades” mezgli, kas atbilst, izmantojot “iepriekšējo” asi. Ja vēlaties koncentrēties uz kādu konkrētu elementu, varat izmantot šo XPath:

Xpath = // * [@ type = 'submit'] // pirms :: ievade [1]

Jūs varat mainīt xpath atbilstoši prasībām, ievietojot [1], [2]

… un tā tālāk.

e) sekojošais brālis:

Atlasiet šādus konteksta mezgla brāļus un māsas. Brāļi un māsas atrodas pašreizējā mezgla līmenī, kā parādīts zemāk redzamajā ekrānā. Tas atradīs elementu pēc pašreizējā mezgla.

 xpath = // * [@ type = 'submit'] // follow-sibling :: ievade

Viens ievades mezgls sakrīt, izmantojot ass “follow-sibling”.

f) Vecāks:

Atlasa pašreizējā mezgla vecāku, kā parādīts zemāk redzamajā ekrānā.

Xpath = // * [@ id = 'rt-feature'] // vecāks :: div

Ir 65 “div” mezgli, kas atbilst, izmantojot “vecāku” asi. Ja vēlaties koncentrēties uz kādu konkrētu elementu, varat izmantot šo XPath:

Xpath = // * [@ id = 'rt-feature'] // vecāks :: div [1]

XPath var mainīt atbilstoši prasībām, ieliekot [1], [2]

… un tā tālāk.

g) Es:

Atlasa pašreizējo mezglu vai “pats” nozīmē, ka tas norāda pašu mezglu, kā parādīts zemāk redzamajā ekrānā.

Viens mezgls atbilst, izmantojot "self" asi. Tā vienmēr atrod tikai vienu mezglu, jo tas pārstāv pašelementu.

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

h) pēcnācējs:

Atlasa pašreizējā mezgla pēcnācējus, kā parādīts zemāk redzamajā ekrānā.

Zemāk esošajā izteiksmē tas identificē visus pašreizējā elementa pēctečus (rāmja elements “Main body surround”), kas nozīmē zem mezgla (bērna mezgls, mazbērna mezgls utt.).

Xpath = // * [@ id = 'rt-feature'] // pēcnācējs :: a

Ir 12 “saites” mezgli, kas atbilst “descendant” asij. Ja vēlaties koncentrēties uz kādu konkrētu elementu, varat izmantot šo XPath:

Xpath = // * [@ id = 'rt-feature'] // pēcnācējs :: a [1]

XPath var mainīt atbilstoši prasībām, ieliekot [1], [2]

… un tā tālāk.

Kopsavilkums:

XPath ir nepieciešams, lai tīmekļa lapā atrastu elementu, lai veiktu darbību ar šo konkrēto elementu.

  • Ir divi selēna XPath veidi:
    • Absolūtais XPath
    • Relatīvais XPath
  • XPath asis ir metodes, ko izmanto, lai atrastu dinamiskos elementus, kurus citādi nav iespējams atrast ar parasto XPath metodi
  • XPath izteiksme no XML dokumenta atlasa mezglus vai mezglu sarakstu, pamatojoties uz tādiem atribūtiem kā ID, nosaukums, klases nosaukums utt.