XPath in Selenium WebDriver-zelfstudie: hoe XPath te vinden?

In Selenium-automatisering, als de elementen niet worden gevonden door de algemene locators zoals id, klasse, naam, enz., wordt XPath gebruikt om een ​​element op de webpagina te vinden.

In deze zelfstudie leren we over de xpath- en verschillende XPath-expressies om de complexe of dynamische elementen te vinden, waarvan de kenmerken dynamisch veranderen bij het vernieuwen of bij elke bewerking.

In deze XPath-zelfstudie leert u-

Wat is XPath in selenium?

XPath in Selenium is een XML-pad dat wordt gebruikt voor navigatie door de HTML-structuur van de pagina. Het is een syntaxis of taal voor het vinden van elk element op een webpagina met behulp van XML-padexpressie. XPath kan worden gebruikt voor zowel HTML- als XML-documenten om de locatie van elk element op een webpagina te vinden met behulp van de HTML DOM-structuur.

Het basisformaat van XPath in selenium wordt hieronder uitgelegd met screenshot.

Basisformaat van XPath

Syntaxis voor XPath-selenium:

XPath bevat het pad van het element op de webpagina. Standaard XPath-syntaxis voor het maken van XPath is. |__+_|

  • //: Selecteer het huidige knooppunt.
  • Tagnaam: Tagnaam van het specifieke knooppunt.
  • @: Selecteer attribuut.
  • Attribuut: Attribuutnaam van het knooppunt.
  • Waarde: Waarde van het attribuut.

Om het element op webpagina's nauwkeurig te vinden, zijn er verschillende soorten locators:

XPath-locators Vind verschillende elementen op webpagina
ID kaart Om het element te vinden op ID van het element
Naam van de klasse Om het element te vinden op Classname van het element
Naam Om het element te vinden op naam van het element
verbind tekst Om het element te vinden op tekst van de link
XPath XPath vereist voor het vinden van het dynamische element en het doorkruisen tussen verschillende elementen van de webpagina
CSS-pad CSS-pad lokaliseert ook elementen zonder naam, klasse of ID.

Soorten X-pad

Er zijn twee soorten XPath:

1) Absoluut XPath

2) Relatieve XPath

Absoluut XPath:

Het is de directe manier om het element te vinden, maar het nadeel van de absolute XPath is dat als er wijzigingen worden aangebracht in het pad van het element, XPath mislukt.

Het belangrijkste kenmerk van XPath is dat het begint met de enkele slash(/) , wat betekent dat je het element uit het hoofdknooppunt kunt selecteren.

Hieronder ziet u het voorbeeld van een absolute xpath-expressie van het element dat in het onderstaande scherm wordt weergegeven.

OPMERKING: U kunt de volgende XPath-oefening hierop oefenen: https://demo.on2vhf.be/test/selenium-xpath.html

Klik hier als de video niet toegankelijk is



Absoluut XPath:

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

Absoluut XPath

Relatief Xpath:

Relatief Xpath begint vanuit het midden van de HTML DOM-structuur. Het begint met een dubbele schuine streep (//). Het kan overal op de webpagina naar elementen zoeken, wat betekent dat u geen lange xpath hoeft te schrijven en u kunt beginnen vanuit het midden van de HTML DOM-structuur. Relatief Xpath heeft altijd de voorkeur omdat het geen volledig pad is vanaf het root-element.

Hieronder ziet u het voorbeeld van een relatieve XPath-expressie van hetzelfde element dat in het onderstaande scherm wordt getoond. Dit is het algemene formaat dat wordt gebruikt om elementen te vinden door XPath.

Klik hier als de video niet toegankelijk is

/html/body/div[2]/div[1]/div/h4[1]/b/html[1]/body[1]/div[2]/div[1]/div[1]/h4[1]/b[1]

Relatieve XPath

Wat zijn XPath-assen.

XPath-assen zoeken verschillende knooppunten in XML-document van het huidige contextknooppunt. XPath-assen zijn de methoden die worden gebruikt om dynamische elementen te vinden, die anders niet mogelijk zijn met de normale XPath-methode zonder ID, Classname, Name, etc.

Axes-methoden worden gebruikt om die elementen te vinden, die dynamisch veranderen bij verversen of andere bewerkingen. Er zijn maar weinig assenmethoden die vaak worden gebruikt in: Selenium-webstuurprogramma zoals kind, ouder, voorouder, broer of zus, voorgaande, zelf, etc.

XPath gebruiken Complexe en dynamische elementen verwerken in selenium

1) Basis XPath:

XPath-expressie selecteert knooppunten of lijst met knooppunten op basis van attributen zoals ID, naam, klasnaam , enz. uit het XML-document zoals hieronder geïllustreerd. |__+_|

Hier is een link om naar de pagina te gaan https://demo.on2vhf.be/test/selenium-xpath.html

Basis XPath

Enkele meer basale xpath-expressies: |_+_|

2) Bevat():

Bevat() is een methode die wordt gebruikt in XPath-expressies. Het wordt gebruikt wanneer de waarde van een attribuut dynamisch verandert, bijvoorbeeld inloggegevens.

De functie bevatten heeft de mogelijkheid om het element met gedeeltelijke tekst te vinden, zoals weergegeven in het onderstaande XPath-voorbeeld.

In dit voorbeeld hebben we geprobeerd het element te identificeren door alleen een gedeeltelijke tekstwaarde van het attribuut te gebruiken. In de onderstaande XPath-expressie wordt de gedeeltelijke waarde 'sub' gebruikt in plaats van de verzendknop. Het kan worden waargenomen dat het element met succes is gevonden.

De volledige waarde van 'Type' is 'submit' maar gebruikt alleen de gedeeltelijke waarde 'sub'. |__+_|

De volledige waarde van 'name' is 'btnLogin' maar met alleen de gedeeltelijke waarde 'btn'. |__+_|

In de bovenstaande uitdrukking hebben we de 'naam' als een attribuut en 'btn' als een gedeeltelijke waarde genomen, zoals weergegeven in de onderstaande schermafbeelding. Dit zal 2 elementen vinden (LOGIN & RESET) aangezien hun 'name' attribuut begint met 'btn'.

Evenzo hebben we in de onderstaande uitdrukking de 'id' als een attribuut en 'bericht' als een gedeeltelijke waarde genomen. Dit zal 2 elementen vinden ('User-ID mag niet leeg zijn' & 'Wachtwoord mag niet leeg zijn') aangezien het 'name' attribuut begint met 'message'. |__+_|

In de onderstaande uitdrukking hebben we de 'tekst' van de link als een attribuut en 'hier' als een gedeeltelijke waarde genomen, zoals weergegeven in de onderstaande schermafbeelding. Deze vindt de link ('hier') zoals de tekst 'hier' wordt weergegeven. |__+_|

3) OR & AND gebruiken:

In OR-expressie worden twee voorwaarden gebruikt, of de 1e voorwaarde OF de 2e voorwaarde waar moet zijn. Het is ook van toepassing als een voorwaarde waar is of misschien beide. Betekent dat elke voorwaarde waar moet zijn om het element te vinden.

In de onderstaande XPath-expressie identificeert het de elementen waarvan één of beide voorwaarden waar zijn. |__+_|

Markeer beide elementen als 'LOGIN'-element met attribuut 'type' en 'RESET'-element met attribuut 'name'.

In de AND-expressie worden twee voorwaarden gebruikt, beide voorwaarden moeten waar zijn om het element te vinden. Het kan geen element vinden als een voorwaarde onwaar is. |__+_|

In onderstaande uitdrukking, het 'LOGIN'-element markeren omdat het zowel attribuut 'type' als 'naam' heeft.

4) Xpath begint-met

XPath begint-met() is een functie die wordt gebruikt voor het vinden van het webelement waarvan de attribuutwaarde wordt gewijzigd bij het vernieuwen of door andere dynamische bewerkingen op de webpagina. Bij deze methode wordt de starttekst van het attribuut gematcht om het element te vinden waarvan de attribuutwaarde dynamisch verandert. U kunt ook elementen vinden waarvan de attribuutwaarde statisch is (geen wijzigingen).

Bijvoorbeeld -: Stel dat de ID van een bepaald element dynamisch verandert, zoals:

Id=' bericht12'

Id=' bericht345'

Id=' bericht8769'

enzovoort. maar de oorspronkelijke tekst is hetzelfde. In dit geval gebruiken we Start-with-expressie.

In de onderstaande uitdrukking zijn er twee elementen met een id die begint met 'bericht' (d.w.z. 'Gebruikers-ID mag niet leeg zijn' & 'Wachtwoord mag niet leeg zijn'). In onderstaand voorbeeld vindt XPath het element waarvan 'ID' begint met 'bericht'. |__+_|

5) XPath-tekst() Functie

De XPath tekst() functie is een ingebouwde functie van selenium webdriver die wordt gebruikt om elementen te lokaliseren op basis van tekst van een webelement. Het helpt om de exacte tekstelementen te vinden en het lokaliseert de elementen binnen de set tekstknooppunten. De te lokaliseren elementen moeten de vorm van een string hebben.

In deze uitdrukking, met tekstfunctie, vinden we het element met exacte tekstovereenkomst zoals hieronder getoond. In ons geval vinden we het element met de tekst 'UserID'. |__+_|

6) XPath-assenmethoden:

Deze XPath-assenmethoden worden gebruikt om de complexe of dynamische elementen te vinden. Hieronder zullen we enkele van deze methoden zien.

Om deze XPath-assenmethode te illustreren, gebruiken we de Guru99 bankdemosite.

a) Volgende:

Selecteert alle elementen in het document van de huidige node( ) [ UserID input box is the current node] zoals getoond in het onderstaande scherm. |__+_|

Er zijn 3 'invoer'-knooppunten die overeenkomen met de 'volgende' as-wachtwoord, login en reset-knop. Als u zich op een bepaald element wilt concentreren, kunt u de onderstaande XPath-methode gebruiken: |__+_|

U kunt de XPath volgens de vereiste wijzigen door [1],[2]………… enzovoort in te voeren.

Met de invoer als '1', vindt de onderstaande schermafbeelding het specifieke knooppunt dat het invoervakelement 'Wachtwoord' is.

b) Voorouder:

De voorouderas selecteert alle voorouderelementen (grootouder, ouder, enz.) van het huidige knooppunt zoals weergegeven in het onderstaande scherm.

In de onderstaande uitdrukking vinden we het voorouderelement van het huidige knooppunt (knooppunt 'ENTERPRISE TESTING'). |__+_|

Er zijn 13 'div'-knooppunten die overeenkomen door de 'voorouder'-as te gebruiken. Als u zich op een bepaald element wilt concentreren, kunt u het onderstaande XPath gebruiken, waarbij u het getal 1, 2 naar wens wijzigt: |_+_|

U kunt de XPath volgens de vereiste wijzigen door [1], [2]………… enzovoort in te voeren.

c) Kind:

Selecteert alle onderliggende elementen van het huidige knooppunt (Java) zoals weergegeven in het onderstaande scherm. |__+_|

Er zijn 71 'li'-knooppunten die overeenkomen met de 'kind'-as. Als u zich op een bepaald element wilt concentreren, kunt u het onderstaande xpath gebruiken: |__+_|

U kunt het xpath volgens de vereiste wijzigen door [1],[2]………… enzovoort te plaatsen.

d) Voorafgaand aan:

Selecteer alle knooppunten die vóór het huidige knooppunt komen, zoals weergegeven in het onderstaande scherm.

In de onderstaande uitdrukking identificeert het alle invoerelementen vóór de knop 'LOGIN' die is Gebruikersnaam en wachtwoord invoerelement. |__+_|

Er zijn 2 'invoer'-knooppunten die overeenkomen door de 'voorafgaande' as te gebruiken. Als u zich op een bepaald element wilt concentreren, kunt u de onderstaande XPath gebruiken: |__+_|

U kunt het xpath volgens de vereiste wijzigen door [1],[2]………… enzovoort te plaatsen.

e) Volgende broer of zus:

Selecteer de volgende broers en zussen van het contextknooppunt. Broers en zussen bevinden zich op hetzelfde niveau als het huidige knooppunt, zoals weergegeven in het onderstaande scherm. Het zal het element na het huidige knooppunt vinden. |__+_|

Eén ingangsknooppunten matchen met behulp van de 'volgende-broer-zus'-as.

f) Ouder:

Selecteert de ouder van het huidige knooppunt zoals weergegeven in het onderstaande scherm. |__+_|

Er zijn 65 'div'-knooppunten die overeenkomen door de 'ouder'-as te gebruiken. Als u zich op een bepaald element wilt concentreren, kunt u de onderstaande XPath gebruiken: |__+_|

U kunt de XPath volgens de vereiste wijzigen door [1],[2]………… enzovoort in te voeren.

g) Zelf:

Selecteert het huidige knooppunt of 'zelf' betekent dat het het knooppunt zelf aangeeft, zoals weergegeven in het onderstaande scherm.

Eén knoop die overeenkomt met behulp van de 'zelf'-as. Het vindt altijd slechts één knoop omdat het het zelf-element vertegenwoordigt. |__+_|

h) Aflopend:

Selecteert de afstammelingen van het huidige knooppunt zoals weergegeven in het onderstaande scherm.

In de onderstaande uitdrukking identificeert het alle elementen die afstammen van het huidige element (frame-element 'Main body surround'), wat betekent onder het knooppunt (kindknooppunt, kleinkindknooppunt, enz.). |__+_|

Er zijn 12 'link'-knooppunten die overeenkomen door de 'afstammeling'-as te gebruiken. Als u zich op een bepaald element wilt concentreren, kunt u de onderstaande XPath gebruiken: |__+_|

U kunt de XPath volgens de vereiste wijzigen door [1],[2]………… enzovoort in te voeren.

Samenvatting:

XPath is vereist om een ​​element op de webpagina te vinden om een ​​bewerking op dat specifieke element uit te voeren.

  • Er zijn twee soorten selenium XPath:
    • Absoluut XPath
    • Relatieve XPath
  • XPath-assen zijn de methoden die worden gebruikt om dynamische elementen te vinden, die anders niet te vinden zijn met de normale XPath-methode
  • XPath-expressie selecteert knooppunten of een lijst met knooppunten op basis van attributen zoals ID , Name, Classname, etc. uit het XML-document .