Hur man använder XPath i Selenium? Handledning

Vad är XPath i Selenium?

XPath in Selenium är en XML-sökväg som används för att navigera genom sidans HTML-struktur. Det är en syntax eller ett språk för att hitta ett element på en webbsida med hjälp av XML-sökvägsuttryck. XPath kan användas för både HTML- och XML-dokument för att hitta platsen för alla element på en webbsida med HTML DOM-struktur.

In Selenium automatisering, om elementen inte hittas av de allmänna lokaliseringarna som id, klass, namn, etc. så används XPath för att hitta ett element på webbsidan.

I den här handledningen kommer vi att lära oss om Xpath och olika XPath-uttryck för att hitta de komplexa eller dynamiska elementen, vars attribut ändras dynamiskt vid uppdatering eller andra operationer.

XPath-syntax

XPath innehåller sökvägen till elementet som finns på webbsidan. Standard XPath-syntax för att skapa XPath är.

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

Det grundläggande formatet för XPath i selen förklaras nedan med skärmdump.

XPath-syntax
Grundläggande format för XPath
  • // : Välj aktuell nod.
  • Taggnamn: Tagnamn för den specifika noden.
  • @: Välj attribut.
  • Attribut: Attributnamn för noden.
  • Värde: Värdet på attributet.

För att hitta elementet på webbsidor korrekt finns det olika typer av lokaliseringsverktyg:

XPath -sökare Hitta olika element på webbsidan
ID För att hitta elementet efter elementets ID
Klassnamn För att hitta elementet efter klassnamn på elementet
Namn För att hitta elementet med namnet på elementet
Länktext För att hitta elementet med texten i länken
XPath XPath krävs för att hitta det dynamiska elementet och gå mellan olika delar av webbsidan
CSS-sökväg CSS-sökvägen lokaliserar också element som inte har något namn, klass eller ID.

Typer av X-väg

Det finns två typer av XPath:

1) Absolut XPath

2) Relativ XPath

Absolut XPath

Det är det direkta sättet att hitta elementet, men nackdelen med den absoluta XPath är att om det görs några ändringar i sökvägen till elementet så misslyckas den XPath.

Det viktigaste kännetecknet för XPath är att det börjar med det enda snedstrecket(/) , vilket betyder att du kan välja elementet från rotnoden.

Nedan är exemplet på ett absolut Xpath-uttryck för elementet som visas på skärmen nedan.

OBS: Du kan träna följande XPath-övning på detta https://demo.guru99.com/test/selenium-xpath.html

Klicka här. om videon inte är tillgänglig

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

Absolut XPath

Absolut XPath

Relativ Xpath

Relativ Xpath startar från mitten av HTML DOM-strukturen. Det börjar med dubbelt snedstreck (//). Det kan söka element var som helst på webbsidan, betyder att du inte behöver skriva en lång xpath och du kan börja från mitten av HTML DOM-strukturen. Relativ Xpath är alltid att föredra eftersom det inte är en komplett sökväg från rotelementet.

Nedan är ett exempel på ett relativt XPath-uttryck för samma element som visas på skärmen nedan. Detta är det vanliga formatet som används för att hitta element av XPath.

Klicka här. om videon inte är tillgänglig

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

Relativ XPath

Relativ XPath

Vad är XPath-axlar.

XPath Axes söker efter olika noder i XML-dokument från aktuell kontextnod. XPath-axlar är metoderna som används för att hitta dynamiska element, som annars inte är möjliga med normal XPath-metod utan ID, klassnamn, namn etc. XPath i Selenium innehåller flera metoder som Contains, AND, Absolute XPath och Relative XPath för att identifiera och lokalisera dynamiska element baserat på olika attribut och villkor.

Axemetoder används för att hitta de element som ändras dynamiskt vid uppdatering eller andra operationer. Det finns få axemetoder som ofta används i Selenium Webdriver som barn, förälder, förfader, syskon, föregående, jag, etc.

Hur man skriver Dynamic XPath In Selenium webbdrivrutin

1) Grundläggande XPath

XPath-uttryck välj noder eller lista med noder på basis av attribut som ID , Namn, Klassnamn, etc. från XML-dokumentet som illustreras nedan.

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

Här är en länk för att komma åt sidan https://demo.guru99.com/test/selenium-xpath.html

Grundläggande XPath

Grundläggande XPath

Några mer grundläggande xpath-uttryck:

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) Innehåller()

Contains() är en metod som används i XPath-uttryck. Det används när värdet på ett attribut ändras dynamiskt, till exempel inloggningsinformation.

Innehållsfunktionen har en förmåga att hitta elementet med deltext som visas i XPath-exemplet nedan.

I det här exemplet försökte vi identifiera elementet genom att bara använda ett partiellt textvärde för attributet. I XPath-uttrycket nedan används partiellt värde 'sub' istället för submit-knappen. Det kan observeras att elementet hittas framgångsrikt.

Det fullständiga värdet för 'Type' är 'submit' men använder endast partiellt värde 'sub'.

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

Det fullständiga värdet för 'namn' är 'btnLogin' men använder endast partiellt värde 'btn'.

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

I uttrycket ovan har vi tagit "namnet" som ett attribut och "btn" som ett delvärde som visas i skärmdumpen nedan. Detta kommer att hitta 2 element (LOGGA IN & ÅTERSTÄLL) eftersom deras 'name'-attribut börjar med 'btn'.

Innehåller()

På liknande sätt har vi i uttrycket nedan tagit "id" som ett attribut och "meddelande" som ett delvärde. Detta kommer att hitta 2 element ('Användar-ID får inte vara tomt' & 'Lösenord får inte vara tomt') eftersom dess 'id'-attribut börjar med 'meddelande'.

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

Innehåller()

I uttrycket nedan har vi tagit länkens "text" som ett attribut och "här" som ett delvärde som visas i skärmdumpen nedan. Detta kommer att hitta länken ('här') eftersom den visar texten 'här'.

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

Innehåller()

3) Använd ELLER & OCH

I OR-uttryck används två villkor, oavsett om det första villkoret ELLER det andra villkoret ska vara sant. Det är också tillämpligt om något villkor är sant eller kanske båda. Betyder att ett villkor ska vara sant för att hitta elementet.

I XPath-uttrycket nedan identifierar det de element vars enstaka eller båda villkor är sanna.

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

Markera båda elementen som "LOGIN"-element med attributet 'type' och "RESET"-element med attributet 'name'.

Använder OR & AND

I AND-uttryck används två villkor, båda villkoren bör vara sanna för att hitta elementet. Det misslyckas med att hitta element om något villkor är falskt.

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

I uttrycket nedan markerar du elementet 'LOGIN' eftersom det har både attributet 'typ' och 'namn'.

Använder OR & AND

4) Xpath börjar med

XPath börjar-med() är en funktion som används för att hitta webbelementet vars attributvärde ändras vid uppdatering eller av andra dynamiska operationer på webbsidan. I den här metoden matchas starttexten för attributet för att hitta elementet vars attributvärde ändras dynamiskt. Du kan också hitta element vars attributvärde är statiskt (inte ändringar).

Till exempel -: Antag att ett visst elements ID ändras dynamiskt som:

Id=” meddelande12″

Id=” meddelande345″

Id=” meddelande8769″

och så vidare... men den ursprungliga texten är densamma. I det här fallet använder vi Start-med uttryck.

I uttrycket nedan finns det två element med ett id som börjar med "meddelande" (dvs. 'Användar-ID får inte vara tomt' & 'Lösenord får inte vara tomt'). I exemplet nedan hittar XPath de element vars 'ID' börjar med 'meddelande'.

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

Xpath börjar med

5) XPath Text() Funktion

Smakämnen XPath text() funktion är en inbyggd funktion av selen webdriver som används för att lokalisera element baserat på text i ett webbelement. Det hjälper till att hitta de exakta textelementen och det lokaliserar elementen inom uppsättningen textnoder. Elementen som ska lokaliseras ska vara i strängform.

I detta uttryck, med textfunktion, hittar vi elementet med exakt textmatchning som visas nedan. I vårt fall hittar vi elementet med texten "UserID".

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

XPath Text() Funktion

XPath axlar metoder

Dessa XPath-axlar metoder används för att hitta de komplexa eller dynamiska elementen. Nedan kommer vi att se några av dessa metoder.

För att illustrera dessa XPath-axlar kommer vi att använda Guru99-bankdemosidan.

1) Följer

Väljer alla element i dokumentet för den aktuella noden ( ) [ UserID input box is the current nod] som visas på skärmen nedan.

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

Efter

Det finns 3 "ingångs"-noder som matchar genom att använda "följande" axel-lösenord, inloggning och återställningsknapp. Om du vill fokusera på något speciellt element kan du använda XPath-metoden nedan:

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

Du kan ändra XPath enligt kraven genom att sätta [1],[2]…………och så vidare.

Med inmatningen som '1' hittar skärmbilden nedan den specifika noden som är inmatningsboxelementet 'Lösenord'.

Efter

2) Anfader

Förfaderaxeln väljer alla förfäderselement (farförälder, förälder, etc.) för den aktuella noden som visas på skärmen nedan.

I uttrycket nedan hittar vi förfäderselement för den nuvarande noden (noden "ENTERPRISE TESTING").

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

Förfader

Det finns 13 "div"-noder som matchar genom att använda "förfader"-axeln. Om du vill fokusera på något speciellt element kan du använda XPath nedan, där du ändrar siffran 1, 2 enligt dina krav:

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

Du kan ändra XPath enligt kraven genom att sätta [1], [2] ………… och så vidare.

3) Barn

Väljer alla underordnade element i den aktuella noden (Java) som visas på skärmen nedan.

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

Barn

Det finns 71 "li"-noder som matchar genom att använda "barn"-axeln. Om du vill fokusera på något speciellt element kan du använda nedanstående xpath:

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

Du kan ändra xpath enligt kravet genom att sätta [1],[2]…………och så vidare.

4) Föregående

Välj alla noder som kommer före den aktuella noden som visas på skärmen nedan.

I uttrycket nedan identifierar det alla inmatningselement före "LOGGA IN"-knappen dvs Användar ID och Lösenord ingångselement.

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

föregående

Det finns 2 "ingångs"-noder som matchar genom att använda "föregående" axel. Om du vill fokusera på något speciellt element kan du använda XPath nedan:

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

Du kan ändra xpath enligt kravet genom att sätta [1],[2]…………och så vidare.

5) Följande syskon

Välj följande syskon till kontextnoden. Syskon är på samma nivå som den aktuella noden som visas på skärmen nedan. Den kommer att hitta elementet efter den aktuella noden.

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

Följer syskon

En ingångsnod matchar genom att använda "följande-syskon"-axeln.

6) Förälder

Väljer föräldern till den aktuella noden som visas på skärmen nedan.

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

Moderbolaget

Det finns 65 "div"-noder som matchar genom att använda "förälder"-axeln. Om du vill fokusera på något speciellt element kan du använda XPath nedan:

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

Du kan ändra XPath enligt kraven genom att sätta [1],[2]…………och så vidare.

7) Själv

Väljer den aktuella noden eller "jag" betyder att det indikerar själva noden som visas på skärmen nedan.

Själv

En nod matchar genom att använda "själv"-axeln. Den hittar alltid bara en nod eftersom den representerar självelement.

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

8) Ättling

Väljer ättlingar till den aktuella noden som visas på skärmen nedan.

I uttrycket nedan identifierar det alla element avkomlingar till det aktuella elementet (ramelement 'Main body surround') vilket betyder ner under noden (barnnod, barnbarnsnod, etc.).

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

ättling

Det finns 12 "länk"-noder som matchar genom att använda "avkommande"-axeln. Om du vill fokusera på något speciellt element kan du använda XPath nedan:

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

Du kan ändra XPath enligt kraven genom att sätta [1],[2]…………och så vidare.

Sammanfattning

XPath krävs för att hitta ett element på webbsidan för att göra en operation på det specifika elementet.

  • Det finns två typer av selen XPath:
    • Absolut XPath
    • Relativ XPath
  • XPath Axes är metoderna som används för att hitta dynamiska element, som annars inte är möjliga att hitta med normal XPath-metod
  • XPath-uttryck välj noder eller lista med noder på basis av attribut som ID, Namn, Klassnamn, etc. från XML-dokumentet.

Kontrollera också: - Selenium Handledning för nybörjare: Lär dig WebDriver på 7 dagar