XPath dans Selenium: Didacticiel
Qu'est-ce que XPath dans Selenium?
XPath dans Selenium est un chemin XML utilisรฉ pour la navigation dans la structure HTML de la page. Il s'agit d'une syntaxe ou d'un langage permettant de rechercher n'importe quel รฉlรฉment sur une page Web ร l'aide d'une expression de chemin XML. XPath peut รชtre utilisรฉ pour les documents HTML et XML pour trouver l'emplacement de n'importe quel รฉlรฉment sur une page Web ร l'aide de la structure HTML DOM.
In Selenium En cas d'automatisation, si les รฉlรฉments ne sont pas trouvรฉs par les localisateurs gรฉnรฉraux tels que id, class, name, etc., XPath est utilisรฉ pour trouver un รฉlรฉment sur la page Web.
Dans ce didacticiel, nous dรฉcouvrirons XPath et diffรฉrentes expressions XPath pour trouver les รฉlรฉments complexes ou dynamiques, dont les attributs changent dynamiquement lors de l'actualisation ou de toute opรฉration.
Syntaxe XPath
XPath contient le chemin de l'รฉlรฉment situรฉ sur la page Web. La syntaxe XPath standard pour crรฉer XPath est la suivante.
Xpath=//tagname[@attribute='value']
Le format de base de XPath en sรฉlรฉnium est expliquรฉ ci-dessous avec une capture d'รฉcran.

- // : Sรฉlectionnez le nลud actuel.
- Nom de l'รฉtiquette : Nom de variable du nลud particulier.
- @: Sรฉlectionnez l'attribut.
- Attribut: Nom d'attribut du nลud.
- Valeur Relative (RV): Valeur de l'attribut.
Pour trouver l'รฉlรฉment avec prรฉcision sur les pages Web, il existe diffรฉrents types de localisateurs :
| Localisateurs XPath | Trouver diffรฉrents รฉlรฉments sur la page Web |
|---|---|
| ID | Pour rechercher l'รฉlรฉment par ID de l'รฉlรฉment |
| Nom du cours | Pour rechercher l'รฉlรฉment par nom de classe de l'รฉlรฉment |
| Nom | Pour rechercher l'รฉlรฉment par le nom de l'รฉlรฉment |
| Texte de lien | Pour trouver l'รฉlรฉment par texte du lien |
| XPath | XPath requis pour trouver l'รฉlรฉment dynamique et parcourir entre les diffรฉrents รฉlรฉments de la page Web |
| Chemin CSS | Le chemin CSS localise รฉgalement les รฉlรฉments sans nom, classe ou ID. |
Types de chemin X
Il existe deux types de XPath :
1) XPath absolu
2) XPath relatif
XPath absolu
C'est le moyen direct de trouver l'รฉlรฉment, mais l'inconvรฉnient du XPath absolu est que si des modifications sont apportรฉes au chemin de l'รฉlรฉment, ce XPath รฉchoue.
La principale caractรฉristique de XPath est qu'il commence par une seule barre oblique (/), ce qui signifie que vous pouvez sรฉlectionner l'รฉlรฉment ร partir du nลud racine.
Vous trouverez ci-dessous l'exemple d'une expression XPath absolue de l'รฉlรฉment affichรฉ dans l'รฉcran ci-dessous.
REMARQUE : Vous pouvez pratiquer l'exercice XPath suivant sur ce https://demo.guru99.com/test/selenium-xpath.html
Cliquez ร nouveau ici si la vidรฉo n'est pas accessible
XPath absolu :
/html/body/div[2]/div[1]/div/h4[1]/b/html[1]/body[1]/div[2]/div[1]/div[1]/h4[1]/b[1]
Xpath relatif
Xpath relatif commence au milieu de la structure HTML DOM. Il commence par une double barre oblique (//). Il peut rechercher des รฉlรฉments n'importe oรน sur la page Web, ce qui signifie qu'il n'est pas nรฉcessaire d'รฉcrire un long XPath et que vous pouvez commencer au milieu de la structure HTML DOM. Le Xpath relatif est toujours prรฉfรฉrรฉ car il ne sโagit pas dโun chemin complet ร partir de lโรฉlรฉment racine.
Vous trouverez ci-dessous l'exemple d'une expression XPath relative du mรชme รฉlรฉment affichรฉ dans l'รฉcran ci-dessous. Il s'agit du format commun utilisรฉ pour rechercher un รฉlรฉment par XPath.
Cliquez ร nouveau ici si la vidรฉo n'est pas accessible
Relative XPath: //div[@class='featured-box cloumnsize1']//h4[1]//b[1]
Que sont les axes XPath ?
Les axes XPath recherchent diffรฉrents nลuds dans un document XML ร partir du nลud de contexte actuel. Ils permettent de trouver des รฉlรฉments dynamiques, ce qui est impossible avec une mรฉthode XPath classique, sans ID, nom de classe, nom, etc. Selenium inclut plusieurs mรฉthodes telles que Contient, ET, XPath absolu et XPath relatif pour identifier et localiser des รฉlรฉments dynamiques en fonction de divers attributs et conditions.
Les mรฉthodes Axes sont utilisรฉes pour rechercher les รฉlรฉments qui changent dynamiquement lors de l'actualisation ou de toute autre opรฉration. Il existe peu de mรฉthodes d'axes couramment utilisรฉes dans Selenium Pilote Web comme enfant, parent, ancรชtre, frรจre ou sลur, prรฉcรฉdent, soi, etc.
Comment รฉcrire du XPath dynamique dans Selenium pilote web
1) XPath de base
L'expression XPath sรฉlectionne les nลuds ou la liste de nลuds sur la base d'attributs tels que ID, nom, nom de classe, etc. ร partir du document XML comme illustrรฉ ci-dessous.
Xpath=//input[@name='uid']
Voici un lien pour accรฉder ร la page https://demo.guru99.com/test/selenium-xpath.html
Quelques expressions XPath plus basiques :
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) Contient()
Contains() est une mรฉthode utilisรฉe dans l'expression XPath. Il est utilisรฉ lorsque la valeur d'un attribut change de maniรจre dynamique, par exemple les informations de connexion.
La fonctionnalitรฉ Contenir a la capacitรฉ de trouver l'รฉlรฉment avec un texte partiel, comme indiquรฉ dans l'exemple XPath ci-dessous.
Dans cet exemple, nous avons essayรฉ d'identifier l'รฉlรฉment en utilisant simplement la valeur textuelle partielle de l'attribut. Dans l'expression XPath ci-dessous, la valeur partielle ยซ sub ยป est utilisรฉe ร la place du bouton de soumission. On peut constater que l'รฉlรฉment est trouvรฉ avec succรจs.
La valeur complรจte de ยซ Type ยป est ยซ soumettre ยป, mais en utilisant uniquement la valeur partielle ยซ sous ยป.
Xpath=//*[contains(@type,'sub')]
La valeur complรจte de ยซ nom ยป est ยซ btnLogin ยป, mais en utilisant uniquement la valeur partielle ยซ btn ยป.
Xpath=//*[contains(@name,'btn')]
Dans l'expression ci-dessus, nous avons pris le ยซ nom ยป comme attribut et ยซ btn ยป comme valeur partielle, comme indiquรฉ dans la capture d'รฉcran ci-dessous. Cela trouvera 2 รฉlรฉments (LOGIN & RESET) car leur attribut 'name' commence par 'btn'.
De mรชme, dans l'expression ci-dessous, nous avons pris ยซ id ยป comme attribut et ยซ message ยป comme valeur partielle. Cela trouvera 2 รฉlรฉments (ยซ L'ID utilisateur ne doit pas รชtre vide ยป et ยซ Le mot de passe ne doit pas รชtre vide ยป) car son attribut ยซ id ยป commence par ยซ message ยป.
Xpath=//*[contains(@id,'message')]
Dans l'expression ci-dessous, nous avons pris le ยซ texte ยป du lien comme attribut et ยซ ici ยป comme valeur partielle, comme indiquรฉ dans la capture d'รฉcran ci-dessous. Cela trouvera le lien (ยซ ici ยป) car il affichera le texte ยซ ici ยป.
Xpath=//*[contains(text(),'here')]
Xpath=//*[contains(@href,'guru99.com')]
3) Utiliser OU & โโET
Dans l'expression OR, deux conditions sont utilisรฉes, que la 1รจre condition OU la 2รจme condition soit vraie. Cela sโapplique รฉgalement si une condition est vraie ou peut-รชtre les deux. Signifie que nโimporte quelle condition doit รชtre vraie pour trouver lโรฉlรฉment.
Dans l'expression XPath ci-dessous, il identifie les รฉlรฉments dont une ou les deux conditions sont vraies.
Xpath=//*[@type='submit' or @name='btnReset']
Mise en รฉvidence des deux รฉlรฉments : lโรฉlรฉment ยซ LOGIN ยป ayant lโattribut ยซ type ยป et lโรฉlรฉment ยซ RESET ยป ayant lโattribut ยซ name ยป.
Dans l'expression AND, deux conditions sont utilisรฉes, les deux conditions doivent รชtre vraies pour trouver l'รฉlรฉment. Il ne parvient pas ร trouver un รฉlรฉment si une condition est fausse.
Xpath=//input[@type='submit' and @name='btnLogin']
Dans l'expression ci-dessous, mettez en surbrillance l'รฉlรฉment ยซ LOGIN ยป car il possรจde ร la fois les attributs ยซ type ยป et ยซ nom ยป.
4) XPath commence par
XPath commence par() est une fonction utilisรฉe pour rechercher l'รฉlรฉment Web dont la valeur d'attribut est modifiรฉe lors de l'actualisation ou par d'autres opรฉrations dynamiques sur la page Web. Dans cette mรฉthode, le texte de dรฉpart de l'attribut est mis en correspondance pour trouver l'รฉlรฉment dont la valeur d'attribut change dynamiquement. Vous pouvez รฉgalement rechercher des รฉlรฉments dont la valeur d'attribut est statique (et non modifiรฉe).
Par exemple - : Supposons que l'ID d'un รฉlรฉment particulier change dynamiquement comme :
Id=โmessage12โณ
Id=โmessage345โณ
Id=โmessage8769โณ
et ainsi de suite... mais le texte initial est le mรชme. Dans ce cas, nous utilisons l'expression Start-with.
Dans l'expression ci-dessous, il y a deux รฉlรฉments avec un identifiant commenรงant par ยซ message ยป (c'est-ร -dire ยซ L'ID utilisateur ne doit pas รชtre vide ยป et ยซ Le mot de passe ne doit pas รชtre vide ยป). Dans l'exemple ci-dessous, XPath trouve les รฉlรฉments dont ยซ ID ยป commence par ยซ message ยป.
Xpath=//label[starts-with(@id,'message')]
5) Fonction XPath Text()
Le Fonction XPath text() est une fonction intรฉgrรฉe de Selenium Webdriver qui est utilisรฉe pour localiser des รฉlรฉments en fonction du texte d'un รฉlรฉment Web. Il aide ร trouver les รฉlรฉments de texte exacts et ร localiser les รฉlรฉments dans l'ensemble de nลuds de texte. Les รฉlรฉments ร localiser doivent รชtre sous forme de chaรฎne.
Dans cette expression, avec la fonction texte, nous trouvons l'รฉlรฉment avec une correspondance exacte du texte, comme indiquรฉ ci-dessous. Dans notre cas, nous trouvons l'รฉlรฉment avec le texte ยซ UserID ยป.
Xpath=//td[text()='UserID']
Mรฉthodes des axes XPath
Ces mรฉthodes d'axes XPath sont utilisรฉes pour rechercher les รฉlรฉments complexes ou dynamiques. Ci-dessous, nous verrons certaines de ces mรฉthodes.
Pour illustrer ces axes XPath, nous utiliseronsโฆ GuruSite de dรฉmonstration de 99 Bank.
1) Suite
Sรฉlectionne tous les รฉlรฉments du document du nลud actuel ( ) [la zone de saisie UserID est le nลud actuel] comme indiquรฉ dans l'รฉcran ci-dessous.
Xpath=//*[@type='text']//following::input
Il y a 3 nลuds ยซ d'entrรฉe ยป correspondant en utilisant l'axe ยซ suivant ยป : mot de passe, connexion et bouton de rรฉinitialisation. Si vous souhaitez vous concentrer sur un รฉlรฉment particulier, vous pouvez utiliser la mรฉthode XPath ci-dessous :
Xpath=//*[@type='text']//following::input[1]
Vous pouvez modifier le XPath selon les besoins en mettant [1],[2]โฆโฆโฆโฆet ainsi de suite.
Avec l'entrรฉe ยซ 1 ยป, la capture d'รฉcran ci-dessous trouve le nลud particulier qui est l'รฉlรฉment de la zone de saisie ยซ Mot de passe ยป.
2) Ancรชtre
L'axe des ancรชtres sรฉlectionne tous les รฉlรฉments ancรชtres (grands-parents, parents, etc.) du nลud actuel, comme indiquรฉ dans l'รฉcran ci-dessous.
Dans l'expression ci-dessous, nous trouvons l'รฉlรฉment ancรชtres du nลud actuel (nลud ยซ ENTERPRISE TESTING ยป).
Xpath=//*[text()='Enterprise Testing']//ancestor::div
Il y a 13 nลuds ยซ div ยป correspondant en utilisant l'axe ยซ ancรชtre ยป. Si vous souhaitez vous concentrer sur un รฉlรฉment particulier, vous pouvez utiliser le XPath ci-dessous, oรน vous modifiez le numรฉro 1, 2 selon vos besoins :
Xpath=//*[text()='Enterprise Testing']//ancestor::div[1]
Vous pouvez modifier le XPath selon les besoins en mettant [1], [2]โฆโฆโฆโฆet ainsi de suite.
3) Enfant
Sรฉlectionne tous les รฉlรฉments enfants du nลud actuel (Java) comme indiquรฉ dans lโรฉcran ci-dessous.
Xpath=//*[@id='java_technologies']//child::li
Il y a 71 nลuds ยซ li ยป correspondant en utilisant l'axe ยซ enfant ยป. Si vous souhaitez vous concentrer sur un รฉlรฉment particulier, vous pouvez utiliser le XPath ci-dessous :
Xpath=//*[@id='java_technologies']//child::li[1]
Vous pouvez modifier le XPath selon les besoins en mettant [1],[2]โฆโฆโฆโฆet ainsi de suite.
4) Prรฉcรฉdent
Sรฉlectionnez tous les nลuds qui prรฉcรจdent le nลud actuel, comme indiquรฉ dans l'รฉcran ci-dessous.
Dans l'expression ci-dessous, il identifie tous les รฉlรฉments d'entrรฉe avant le bouton ยซ CONNEXION ยป qui est Identifiant d'utilisateur et รฉlรฉment d'entrรฉe.
Xpath=//*[@type='submit']//preceding::input
Il y a 2 nลuds ยซ d'entrรฉe ยป correspondant en utilisant l'axe ยซ prรฉcรฉdent ยป. Si vous souhaitez vous concentrer sur un รฉlรฉment particulier, vous pouvez utiliser le XPath ci-dessous :
Xpath=//*[@type='submit']//preceding::input[1]
Vous pouvez modifier le XPath selon les besoins en mettant [1],[2]โฆโฆโฆโฆet ainsi de suite.
5) Frรจre ou sลur suivant
Sรฉlectionnez les frรจres et sลurs suivants du nลud contextuel. Les frรจres et sลurs sont au mรชme niveau du nลud actuel, comme indiquรฉ dans l'รฉcran ci-dessous. Il trouvera l'รฉlรฉment aprรจs le nลud actuel.
xpath=//*[@type='submit']//following-sibling::input
Un nลud d'entrรฉe correspondant en utilisant l'axe ยซ frรจre suivant ยป.
6) Parents
Sรฉlectionne le parent du nลud actuel comme indiquรฉ dans l'รฉcran ci-dessous.
Xpath=//*[@id='rt-feature']//parent::div
Il y a 65 nลuds ยซ div ยป correspondant en utilisant l'axe ยซ parent ยป. Si vous souhaitez vous concentrer sur un รฉlรฉment particulier, vous pouvez utiliser le XPath ci-dessous :
Xpath=//*[@id='rt-feature']//parent::div[1]
Vous pouvez modifier le XPath selon les besoins en mettant [1],[2]โฆโฆโฆโฆet ainsi de suite.
7) Soi
Sรฉlectionne le nลud actuel ou ยซ soi ยป signifie qu'il indique le nลud lui-mรชme comme indiquรฉ dans l'รฉcran ci-dessous.
Un nลud correspondant en utilisant l'axe ยซ auto ยป. Il ne trouve toujours qu'un seul nลud car il reprรฉsente l'รฉlรฉment propre.
Xpath =//*[@type='password']//self::input
8) Descendant
Sรฉlectionne les descendants du nลud actuel comme indiquรฉ dans l'รฉcran ci-dessous.
Dans l'expression ci-dessous, il identifie tous les รฉlรฉments descendants de l'รฉlรฉment actuel (รฉlรฉment de cadre 'Main body surround'), ce qui signifie en bas sous le nลud (nลud enfant, nลud petit-enfant, etc.).
Xpath=//*[@id='rt-feature']//descendant::a
Il y a 12 nลuds ยซ lien ยป correspondant en utilisant l'axe ยซ descendant ยป. Si vous souhaitez vous concentrer sur un รฉlรฉment particulier, vous pouvez utiliser le XPath ci-dessous :
Xpath=//*[@id='rt-feature']//descendant::a[1]
Vous pouvez modifier le XPath selon les besoins en mettant [1],[2]โฆโฆโฆโฆet ainsi de suite.
FAQ
Rรฉsumรฉ
XPath est nรฉcessaire pour trouver un รฉlรฉment sur la page Web afin d'effectuer une opรฉration sur cet รฉlรฉment particulier.
- Il existe deux types de XPath au sรฉlรฉnium :
- XPath absolu
- XPath relatif
- Les axes XPath sont les mรฉthodes utilisรฉes pour rechercher des รฉlรฉments dynamiques, qui autrement ne seraient pas possibles par la mรฉthode XPath normale.
- L'expression XPath sรฉlectionne des nลuds ou une liste de nลuds sur la base d'attributs tels que ID, Nom, Nom de classe, etc. ร partir du document XML.
Vรฉrifiez รฉgalement: - Selenium Tutoriel pour dรฉbutants : Apprenez WebDriver en 7 jours

















