Tutoriel XPath dans Selenium WebDriver: Comment trouver XPath?

Table des matières:

Anonim

Dans l'automatisation Selenium, si les éléments ne sont pas trouvés par les localisateurs généraux tels que id, classe, nom, etc., XPath est utilisé pour trouver un élément sur la page Web.

Dans ce tutoriel, nous allons en apprendre davantage sur xpath et les 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.

Dans ce didacticiel XPath, vous apprendrez-

  • Qu'est-ce que XPath?
  • Types de X-path
    • XPath absolu
    • XPath relatif
  • XPath de base
  • Contient ()
  • Utiliser OR & AND
  • Fonction démarre avec
  • Texte()
  • Méthodes des axes XPath
    • Suivant
    • Ancêtre
    • Enfant
    • Précédent
    • Frère-soeur
    • Parent
    • Soi
    • Descendant

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 d'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.

Le format de base de XPath en sélénium est expliqué ci-dessous avec une capture d'écran.

Format de base de XPath

Syntaxe de XPath sélénium:

XPath contient le chemin de l'élément situé sur la page Web. La syntaxe XPath standard pour la création de XPath est.

Xpath = // nom de variable [@ attribut = 'valeur']
  • //: Sélectionnez le nœud actuel.
  • Tagname: Tagname du nœud particulier.
  • @: Sélectionnez l'attribut.
  • Attribut: nom d'attribut du nœud.
  • Valeur: 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
identifiant Pour trouver l'élément par ID de l'élément
Nom du cours Pour trouver 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 du lien Pour trouver l'élément par texte du lien
XPath XPath requis pour trouver l'élément dynamique et passer entre divers éléments de la page Web
Chemin CSS Le chemin CSS localise également les éléments sans nom, classe ou ID.

Types de X-path

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 s'il y a des modifications apportées au chemin de l'élément, XPath échoue.

La principale caractéristique de XPath est qu'il commence par la barre oblique unique (/), 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 http://demo.guru99.com/test/selenium-xpath.html

Cliquez 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 absolu

Xpath relatif:

Relative Xpath 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 vous pouvez partir du 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. C'est le format couramment utilisé pour rechercher des éléments par XPath.

Cliquez ici si la vidéo n'est pas accessible

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

XPath relatif

Que sont les axes XPath.

Les axes XPath recherchent différents nœuds dans le document XML à partir du nœud de contexte actuel. Les axes XPath sont les méthodes utilisées pour trouver des éléments dynamiques, ce qui n'est pas possible autrement par la méthode XPath normale n'ayant pas d'ID, de nom de classe, de nom, etc.

Les méthodes Axes sont utilisées pour trouver ces é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 Webdriver telles que l'enfant, le parent, l'ancêtre, le frère, le précédent, le soi, etc.

Utilisation de XPath Gestion des éléments complexes et dynamiques dans Selenium

1) XPath de base:

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, comme illustré ci-dessous.

Xpath = // entrée [@ name = 'uid']

Voici un lien pour accéder à la page http://demo.guru99.com/test/selenium-xpath.html

XPath de base

Quelques expressions xpath plus basiques:

Xpath = // entrée [@ type = 'texte']Xpath = // étiquette [@ id = 'message23']Xpath = // input [@ value = 'RESET']Xpath = // * [@ class = 'barone']Xpath = // a [@ href = 'http: //demo.guru99.com/']Xpath = //img[@src='//cdn.guru99.com/images/home/java.png.webp ']

2) Contient ():

Contains () est une méthode utilisée dans l'expression XPath. Il est utilisé lorsque la valeur d'un attribut change dynamiquement, par exemple, les informations de connexion.

La fonctionnalité contient a la capacité de trouver l'élément avec du 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 de texte partielle de l'attribut. Dans l'expression XPath ci-dessous, la valeur partielle «sub» est utilisée à la place du bouton d'envoi. On peut observer que l'élément est trouvé avec succès.

La valeur complète de 'Type' est 'submit' mais en utilisant uniquement la valeur partielle 'sub'.

Xpath = // * [contient (@ type, 'sous')] 

La valeur complète de «nom» est «btnLogin» mais en utilisant uniquement la valeur partielle «btn».

Xpath = // * [contient (@ nom, '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' & 'Le mot de passe ne doit pas être vide') car son attribut 'nom' commence par 'message'.

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

Dans l'expression ci-dessous, nous avons pris le «texte» du lien comme un attribut et «ici» comme une valeur partielle, comme indiqué dans la capture d'écran ci-dessous. Cela trouvera le lien («ici») car il affiche le texte «ici».

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

3) En utilisant OR & AND:

Dans l'expression OR, deux conditions sont utilisées, que la première condition OU la deuxième condition soit vraie. Il est également applicable si une condition est vraie ou peut-être les deux. Signifie qu'une condition doit être vraie pour trouver l'élément.

Dans l'expression XPath ci-dessous, il identifie les éléments dont l'une ou les deux conditions sont vraies.

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

Mettre les deux éléments en surbrillance en tant qu'élément "LOGIN" ayant l'attribut "type" et l'élément "RESET" ayant l'attribut "nom".

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 l'élément si l'une des conditions est fausse.

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

Dans l'expression ci-dessous, mettre en évidence l'élément 'LOGIN' car il a à la fois l'attribut 'type' et 'name'.

4) Xpath démarre avec

XPath starts-with () 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 trouver des éléments dont la valeur d'attribut est statique (ne change pas).

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' & 'Le mot de passe ne doit pas être vide'). Dans l'exemple ci-dessous, XPath trouve les éléments dont «ID» commençant par «message».

Xpath = // étiquette [commence par (@ id, 'message')]

5) Fonction XPath Text ()

La fonction XPath text () est une fonction intégrée de sélénium 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 il localise les éléments dans l'ensemble des nœuds de texte. Les éléments à localiser doivent être sous forme de chaîne.

Dans cette expression, avec la fonction de texte, nous trouvons l'élément avec une correspondance de texte exacte, comme indiqué ci-dessous. Dans notre cas, nous trouvons l'élément avec le texte "UserID".

Xpath = // td [text () = 'ID utilisateur'] 

6) Méthodes des axes XPath:

Ces méthodes d'axes XPath sont utilisées pour trouver les éléments complexes ou dynamiques. Ci-dessous, nous verrons certaines de ces méthodes.

Pour illustrer la méthode des axes XPath, nous utiliserons le site de démonstration de la banque Guru99.

a) À la suite:

Sélectionne tous les éléments du document du nœud actuel () [La zone de saisie de l'ID utilisateur est le nœud actuel] comme indiqué dans l'écran ci-dessous.

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

Il y a 3 nœuds «d'entrée» correspondant en utilisant le mot de passe de l'axe «suivant», le bouton de connexion et 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'] // suivant :: input [1]

Vous pouvez changer le XPath selon les besoins en mettant [1], [2]

… etc.

Avec l'entrée comme «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».

b) Ancêtre:

L'axe des ancêtres sélectionne tous les éléments ancêtres (grand-parent, parent, 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 courant (nœud "ENTERPRISE TESTING").

Xpath = // * [text () = 'Enterprise Testing'] // ancêtre :: 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 nombre 1, 2 selon vos besoins:

Xpath = // * [text () = 'Enterprise Testing'] // ancêtre :: div [1]

Vous pouvez changer le XPath selon les besoins en mettant [1], [2]

… etc.

c) Enfant:

Sélectionne tous les éléments enfants du nœud actuel (Java) comme indiqué dans l'écran ci-dessous.

Xpath = // * [@ id = 'java_technologies'] // enfant :: 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'] // enfant :: li [1]

Vous pouvez modifier le xpath en fonction de l'exigence en mettant [1], [2]

… etc.

d) Précédente:

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 "LOGIN" qui est l' élément d'entrée ID utilisateur et mot de passe .

Xpath = // * [@ type = 'submit'] // précédant :: 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'] // précédent :: input [1]

Vous pouvez modifier le xpath en fonction de l'exigence en mettant [1], [2]

… etc.

e) Frère et soeur suivant:

Sélectionnez les frères suivants du nœud de contexte. 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'] // suivant-frère :: entrée

Un nœud d'entrée correspondant en utilisant l'axe "suivant-frère".

f) Parent:

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 changer le XPath selon les besoins en mettant [1], [2]

… etc.

g) Soi-même:

Sélectionne le nœud actuel ou «self» 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 self.

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

h) 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 courant (élément de cadre 'Main body surround') 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 changer le XPath selon les besoins en mettant [1], [2]

… etc.

Résumé:

XPath est nécessaire pour trouver un élément sur la page Web pour effectuer une opération sur cet élément particulier.

  • Il existe deux types de sélénium XPath:
    • XPath absolu
    • XPath relatif
  • Les axes XPath sont les méthodes utilisées pour trouver des éléments dynamiques, qui autrement ne pourraient pas être trouvés 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.