Localisateurs dans Selenium
โก Rรฉsumรฉ intelligent
Localisateurs dans Selenium Ces commandes indiquent au moteur d'automatisation comment identifier les รฉlรฉments d'interface graphique tels que les zones de texte, les boutons et les cases ร cocher. Ce document explique les types de localisateurs ID, Nom, Texte du lien, DOM et XPath ร l'aide d'exemples pratiques, de rรจgles de syntaxe et de stratรฉgies de sรฉlection pour des scripts d'automatisation web fiables.

Que sont les localisateurs dans Selenium?
Un localisateur est une commande qui dirige Selenium IDE ou Selenium WebDriver cible l'รฉlรฉment d'interface graphique appropriรฉ (zone de texte, bouton, lien ou case ร cocher) sur lequel une action doit รชtre effectuรฉe. L'identification de cet รฉlรฉment est essentielle ร la crรฉation de tout script d'automatisation fiable. Cependant, cette identification prรฉcise est plus complexe qu'il n'y paraรฎt. Il arrive parfois d'interagir avec le mauvais รฉlรฉment, voire avec aucun รฉlรฉment. Pour pallier ce problรจme, Selenium propose diverses stratรฉgies de localisation permettant un ciblage prรฉcis des รฉlรฉments d'interface graphique.
Bien que certaines commandes, comme la commande ยซ ouvrir ยป, ne nรฉcessitent pas de localisateur, la majoritรฉ des Selenium Les commandes dรฉpendent des localisateurs d'รฉlรฉments. Le choix du localisateur dรฉpend en grande partie de votre application testรฉe (AUT). Dans ce tutoriel, nous alternerons entre Facebook et le Mercury Site de dรฉmonstration de Tours (newtours.demoaut), basรฉ sur les localisateurs pris en charge par chaque application. De mรชme, dans votre propre vers les tests Dans ce projet, vous sรฉlectionnerez un localisateur d'รฉlรฉments. Selenium WebDriver basรฉ sur la structure de votre application.
Localisation par ID
Il s'agit de la mรฉthode la plus courante pour localiser les รฉlรฉments, car les identifiants sont conรงus pour รชtre uniques pour chaque รฉlรฉment d'une page. Lorsqu'un attribut d'identifiant est disponible, il est recommandรฉ de l'utiliser en prioritรฉ pour des scripts de test rapides, stables et lisibles.
Target Format: id=id de l'รฉlรฉment
Pour cet exemple, nous utiliserons une page de dรฉmonstration Facebook car Mercury Tours n'utilise pas d'attributs ID pour les champs principaux de son formulaire.
รtape 1) Utilisez cette page de dรฉmonstration https://demo.guru99.com/test/facebook.html Pour effectuer des tests, examinez le champ de texte ยซ Adresse e-mail ou numรฉro de tรฉlรฉphone ยป ร lโaide des outils de dรฉveloppement intรฉgrรฉs de votre navigateur (appuyez sur F12 dans Chrome, Edge ou Windows). Firefox) et notez son identifiant. Dans ce cas, l'identifiant est ยซ email ยป.
รtape 2) Lancement Selenium IDE et entrez ยซ id=email ยป dans le champ Target Cliquez sur le bouton Rechercher et remarquez que le champ de texte ยซ Adresse e-mail ou numรฉro de tรฉlรฉphone ยป est surlignรฉ en jaune avec une bordure verte, indiquant que Selenium L'IDE a correctement localisรฉ l'รฉlรฉment.
Localisation par nom
La localisation des รฉlรฉments par leur nom est similaire ร la localisation par leur ID, ร ceci prรจs que nous utilisons le "nom =" Utilisez plutรดt un prรฉfixe. Cette approche est utile lorsque les รฉlรฉments n'ont pas d'identifiant mais possรจdent un attribut name dรฉfini.
Target Format: name=nom de l'รฉlรฉment
Pour la dรฉmonstration suivante, nous utiliserons Mercury Visites guidรฉes, car tous les รฉlรฉments de formulaire importants du site possรจdent un attribut de nom.
รtape 1) Accรฉdez ร https://demo.guru99.com/test/newtours/ Utilisez les outils de dรฉveloppement de votre navigateur pour examiner le champ de texte ยซ Nom dโutilisateur ยป. Notez son attribut name.
Ici, le nom de l'รฉlรฉment est ยซ userName ยป.
รtape 2) In Selenium IDE, entrez ยซ name=userName ยป dans le champ Target case et cliquez sur le bouton Rechercher. Selenium L'IDE devrait localiser la zone de texte Nom d'utilisateur en la surlignant.
Comment localiser un รฉlรฉment par nom ร l'aide de filtres
Les filtres sont utiles lorsque plusieurs รฉlรฉments partagent le mรชme attribut de nom. Les filtres sont des attributs supplรฉmentaires utilisรฉs pour distinguer les รฉlรฉments qui partagent un nom identique. Sans filtres, Selenium Par dรฉfaut, seul le premier รฉlรฉment correspondant sera pris en compte.
Target Format: nom=nom_de_l'รฉlรฉment filtre=valeur_du_filtre
Prenons un exemple.
รtape 1) Connectez-vous sur Mercury tournรฉes.
Connectez-vous ร Mercury Pour les circuits touristiques, utilisez ยซ tutorial ยป comme nom dโutilisateur et mot de passe. La page de recherche de vols devrait sโafficher, comme ci-dessous.
รtape 2) Utilisez les outils de dรฉveloppement pour examiner les attributs VALUE.
Notez que les boutons radio Aller-retour et Aller simple partagent le mรชme nom ยซ tripType ยป. Cependant, leurs attributs VALUE sont diffรฉrents, ce qui nous permet dโutiliser chaque valeur comme filtre.
รtape 3) Cliquez sur la premiรจre ligne dans l'รฉditeur.
- Nous allons d'abord accรฉder ร l'option ยซ Sens unique ยป. Cliquez sur la premiรจre ligne duโฆ Selenium รditeur IDE.
- Dans la zone de commande, saisissez la commande ยซ click ยป.
- Dans l' Target Dans la case, saisissez ยซ name=tripType value=oneway ยป. La partie ยซ value=oneway ยป sert de filtre.
รtape 4) Cliquez sur le bouton Rechercher.
Remarquerez que Selenium L'IDE met en รฉvidence en vert le bouton radio ยซ Sens unique ยป, confirmant ainsi que l'รฉlรฉment a รฉtรฉ accรฉdรฉ avec succรจs via son attribut VALUE.
รtape 5) Sรฉlectionnez l'option ยซ Sens unique ยป.
Appuyez sur la touche ยซ X ยป de votre clavier pour exรฉcuter la commande de clic. Lโoption ยซ Sens unique ยป est maintenant sรฉlectionnรฉe.
Vous pouvez effectuer la mรชme action sur le bouton radio Aller-retour, en utilisant cette fois ยซ name=tripType value=roundtrip ยป comme cible.
Localisation par texte de lien
Cette stratรฉgie de localisation s'applique uniquement aux textes des liens hypertextes. On accรจde au lien en prรฉfixant la cible par ยซ link= ยป suivi du texte visible du lien hypertexte. Cette mรฉthode est trรจs lisible et convient parfaitement aux tests de navigation.
Target Format: lien=lien_texte
Dans l'exemple suivant, nous accรฉderons au lien ยซ S'INSCRIRE ยป qui se trouve sur le Mercury Page d'accueil des visites.
รtape 1)
- Tout d'abord, assurez-vous d'รชtre dรฉconnectรฉ de Mercury tournรฉes.
- Accรฉdez ร la Mercury Page d'accueil des visites.
รtape 2)
- Utilisez les outils de dรฉveloppement pour examiner le lien ยซ S'INSCRIRE ยป. Le texte du lien apparaรฎt entre les balises d'ancrage ouvrante et fermante.
- Dans ce cas, le texte du lien est ยซ INSCRIPTION ยป. Copiez le texte du lien.
รtape 3) Copiez le texte du lien et collez-le dans le Selenium IDE Target boรฎte. Prรฉfixez-le avec ยซ link = ยป.
รtape 4) Cliquez sur le bouton Rechercher. Selenium L'IDE mettra correctement en รฉvidence le lien REGISTER.
รtape 5) Pour vรฉrifier davantage, entrez ยซ clickAndWait ยป dans la zone de commande et exรฉcutez-la. Selenium IDE cliquera avec succรจs sur le lien S'INSCRIRE et vous redirigera vers la page d'inscription ci-dessous.
Localisation par DOM (Document Object Model)
Le Modรจle d'objet de document (DOM), en termes simples, dรฉcrit comment les รฉlรฉments HTML sont structurรฉs sous forme d'arbre de nลuds. Selenium L'IDE peut parcourir cette arborescence pour accรฉder aux รฉlรฉments de la page. En utilisant cette mรฉthode, Target La boรฎte commence toujours par ยซ dom=documentโฆ ยป. Le prรฉfixe ยซ dom= ยป est gรฉnรฉralement omis car Selenium L'IDE interprรจte automatiquement toute valeur commenรงant par ยซ document ยป comme un chemin DOM.
Il existe quatre mรฉthodes de base pour localiser un รฉlรฉment dans le DOM. Selenium:
- getElementById
- getElementsByName
- dom:name (s'applique uniquement aux รฉlรฉments d'un formulaire nommรฉ)
- dom:index
Localisation par DOM โ getElementById
Commenรงons par explorer la mรฉthode getElementById du DOM. SeleniumCette mรฉthode renvoie un seul รฉlรฉment en faisant correspondre son attribut ID.
Syntaxe
document.getElementById("id of the element")
- L'identifiant de l'รฉlรฉment correspond ร la valeur de l'attribut ID de l'รฉlรฉment auquel on souhaite accรฉder. Cette valeur doit toujours รชtre placรฉe entre guillemets.
รtape 1) Utilisez cette page de dรฉmonstration https://demo.guru99.com/test/facebook.htmlAccรฉdez-y et utilisez les outils de dรฉveloppement pour examiner la case ร cocher ยซ Rester connectรฉ ยป. Notez son identifiant.
L'identifiant que nous devrions utiliser est ยซ persist_box ยป.
รtape 2) Ouvrez Selenium IDE et dans le Target Entrez la boรฎte document.getElementById(โpersist_boxโ), puis cliquez sur Rechercher. Selenium L'IDE repรจre la case ร cocher ยซ Rester connectรฉ ยป. Bien qu'il ne puisse pas mettre en surbrillance l'intรฉrieur de la case, il l'entoure d'une bordure verte vive, comme illustrรฉ ci-dessous.
Localisation par DOM โ getElementsByName
La mรฉthode `getElementById` accรจde ร un seul รฉlรฉment ร la fois, celui dont l'identifiant est spรฉcifiรฉ. La mรฉthode `getElementsByName` fonctionne diffรฉremment : elle renvoie un tableau d'รฉlรฉments partageant le nom spรฉcifiรฉ. Chaque รฉlรฉment est accessible par son index numรฉrique, qui commence ร 0.
Syntaxe
document.getElementsByName("name")[index]
- name = nom de l'รฉlรฉment tel que dรฉfini par son attribut 'name'
- index = un entier qui indique quel รฉlรฉment du tableau de getElementsByName sera utilisรฉ.
รtape 1) Accรฉdez ร la Mercury Rendez-vous sur la page d'accueil de Tours et connectez-vous en utilisant ยซ tutorial ยป comme nom d'utilisateur et mot de passe. Votre navigateur affichera alors la page de recherche de vols.
รtape 2) Utilisez les outils de dรฉveloppement pour examiner les trois boutons radio en bas de la page (Classe รconomique, Classe Affaires et Premiรจre classe). Vous remarquerez qu'ils portent tous le mรชme nom : ยซ servClass ยป.
รtape 3) Tout d'abord, accรฉdons au bouton radio ยซ Classe รฉconomique ยป. Parmi les trois boutons radio, cet รฉlรฉment apparaรฎt en premier, son index est donc 0. Selenium Dans l'IDE, tapez document.getElementsByName(โservClassโ)[0] et cliquez sur le bouton Rechercher. Selenium IDE identifiera correctement le bouton radio ยซ Classe รฉconomique ยป.
รtape 4) Modifiez le numรฉro d'index ร 1, afin que votre Target devient document.getElementsByName(โservClassโ)[1]. Cliquez sur le bouton Rechercher, et Selenium L'IDE mettra en surbrillance le bouton radio ยซ Classe affaires ยป, comme indiquรฉ ci-dessous.
Localisation par DOM โ dom:name
Comme indiquรฉ prรฉcรฉdemment, cette mรฉthode ne s'applique que si l'รฉlรฉment auquel vous accรฉdez se trouve dans un formulaire nommรฉ. Le chemin d'accรจs commence au niveau du formulaire, puis remonte jusqu'ร l'รฉlรฉment cible par son nom.
Syntaxe
document.forms["name of the form"].elements["name of the element"]
- nom du formulaire = la valeur de l'attribut name de la balise form qui contient l'รฉlรฉment auquel vous souhaitez accรฉder
- nom de l'รฉlรฉment = la valeur de l'attribut name de l'รฉlรฉment auquel vous souhaitez accรฉder
รtape 1) Accรฉdez ร Mercury Page d'accueil des visites https://demo.guru99.com/test/newtours/ Utilisez les outils de dรฉveloppement pour examiner le champ de texte ยซ Nom dโutilisateur ยป. Vous remarquerez quโil se trouve dans un formulaire nommรฉ ยซ home ยป.
รtape 2) In Selenium Dans l'IDE, tapez document.forms[โhomeโ].elements[โuserNameโ] et cliquez sur le bouton Rechercher. Selenium L'IDE accรฉdera ร l'รฉlรฉment avec succรจs.
Localisation par DOM โ dom:index
Cette mรฉthode s'applique mรชme si l'รฉlรฉment ne se trouve pas dans un formulaire nommรฉ, car elle utilise l'index du formulaire plutรดt que son nom. Cela s'avรจre utile pour les pages existantes ou les formulaires gรฉnรฉrรฉs automatiquement oรน la dรฉnomination est impossible.
Syntaxe
document.forms[index of the form].elements[index of the element]
- index du formulaire = le numรฉro d'index (ร partir de 0) du formulaire par rapport ร la page entiรจre
- index de l'รฉlรฉment = le numรฉro d'index (ร partir de 0) de l'รฉlรฉment par rapport au formulaire qui le contient
Nous accรฉderons ร la zone de texte ยซ Tรฉlรฉphone ยป sur le Mercury Page d'inscription aux visites guidรฉes. Le formulaire de cette page ne comporte ni nom ni identifiant, ce qui en fait un bon exemple.
รtape 1) Accรฉdez ร la Mercury Page d'inscription aux visites guidรฉes : examinez le champ ยซ Tรฉlรฉphone ยป. Remarquez que le formulaire ne comporte ni identifiant ni nom.
รtape 2) Saisissez document.forms[0].elements[3] dans le Selenium IDE Target case et cliquez sur le bouton Rechercher. Selenium L'IDE accรฉdera correctement ร la zone de texte Tรฉlรฉphone.
รtape 3) Vous pouvez รฉgalement utiliser le nom de l'รฉlรฉment au lieu de son index pour obtenir le mรชme rรฉsultat. Saisissez `document.forms[0].elements["phone"]` dans le champ prรฉvu ร cet effet. Target La zone de texte ยซ Tรฉlรฉphone ยป restera sรฉlectionnรฉe.
Localisation par XPath
XPath est le langage de requรชte utilisรฉ pour naviguer dans les nลuds XML (Extensible Markup Language). รtant donnรฉ que HTML peut รชtre considรฉrรฉ comme une implรฉmentation de XML, XPath peut รฉgalement localiser des รฉlรฉments HTML. C'est l'une des stratรฉgies de localisation les plus puissantes. Selenium.
- Avantage: Il peut accรฉder ร presque tous les รฉlรฉments, y compris ceux qui n'ont pas d'attributs de classe, de nom ou d'identifiant.
- Dรฉsavantage: Il s'agit de la stratรฉgie de localisation la plus complexe en raison de ses nombreuses rรจgles et variations de syntaxe.
Les outils de dรฉveloppement des navigateurs modernes peuvent gรฉnรฉrer automatiquement des expressions XPath. Dans Chrome, Edge ou FirefoxDans le panneau รlรฉments, cliquez avec le bouton droit sur un รฉlรฉment et choisissez Copier > Copier le XPath. Lโexemple suivant nous permettra dโaccรฉder ร une image introuvable par les mรฉthodes dรฉcrites prรฉcรฉdemment.
รtape 1) Accรฉdez ร la Mercury Rendez-vous sur la page d'accueil des visites et utilisez les outils de dรฉveloppement pour inspecter le rectangle orange situรฉ ร droite de la case jaune ยซ Liens ยป, comme indiquรฉ ci-dessous.
รtape 2) Faites un clic droit sur le code HTML de l'รฉlรฉment, puis sรฉlectionnez l'option ยซ Copier XPath ยป.
รtape 3) In Selenium IDE, saisissez une seule barre oblique ยซ / ยป dans le Target Dans la boรฎte, collez ensuite le XPath copiรฉ ร l'รฉtape prรฉcรฉdente. L'entrรฉe dans le Target la boรฎte doit maintenant commencer par deux barres obliques ยซ // ยป.
รtape 4) Cliquez sur le bouton Rechercher. Selenium L'IDE mettra en surbrillance la case orange, comme indiquรฉ ci-dessous.
Pourquoi choisir le bon localisateur est important
Choisir la bonne stratรฉgie de localisation est l'une des dรฉcisions les plus importantes dans Selenium L'automatisation est essentielle car elle influe directement sur la stabilitรฉ des scripts, leur vitesse d'exรฉcution et les coรปts de maintenance ร long terme. Un localisateur mal choisi peut entraรฎner des tests instables, de faux positifs et des corrections frรฉquentes ร chaque modification de l'interface utilisateur. L'ordre de prรฉfรฉrence recommandรฉ par les ingรฉnieurs en automatisation expรฉrimentรฉs est le suivant : ID, puis Nom, suivi du sรฉlecteur CSS, du texte du lien et enfin de XPath.
Les localisateurs basรฉs sur l'ID sont les plus rapides car la recherche du navigateur est optimisรฉe pour les identifiants uniques. Les localisateurs basรฉs sur le nom sont presque aussi efficaces lorsque les noms sont uniques. Les sรฉlecteurs CSS et XPath offrent une grande flexibilitรฉ, mais ont tendance ร รชtre plus lents et plus fragiles lors des refactorisations du DOM. Le texte des liens est excellent pour les liens de navigation, mais sa rรฉutilisation est limitรฉe.
Une automatisation stable repose รฉgalement sur la collaboration avec les dรฉveloppeurs. Lorsque les testeurs demandent des attributs ID ou data-* cohรฉrents et pertinents lors des revues de code, la fiabilitรฉ des localisateurs s'en trouve considรฉrablement amรฉliorรฉe. Il est prรฉfรฉrable d'รฉviter de se fier aux ID gรฉnรฉrรฉs automatiquement (comme ceux produits par les frameworks), car ils peuvent changer d'une version ร l'autre. En privilรฉgiant des localisateurs lisibles et orientรฉs intention, les รฉquipes peuvent maintenir leurs suites de tests et rรฉduire la dette technique ร mesure que l'application รฉvolue.
Meilleures pratiques pour la rรฉdaction de localisateurs fiables
Des localisateurs fiables sont la base d'un systรจme maintenable. Selenium Suite de tests. Les pratiques suivantes contribuent ร rรฉduire les รฉchecs de script, ร amรฉliorer la lisibilitรฉ et ร rendre les tests rรฉsistants aux modifications de l'interface utilisateur.
- Privilรฉgiez les identifiants uniques : Vรฉrifiez toujours d'abord la prรฉsence d'un attribut ID. Les ID sont conรงus pour รชtre uniques au sein d'une page et constituent le choix le plus performant.
- Utilisez les attributs sรฉmantiques Name et data-* : Encouragez les dรฉveloppeurs ร ajouter des attributs de test stables tels que data-testid ou data-qa. Ces attributs restent cohรฉrents mรชme lorsque les classes CSS changent.
- รvitez les XPath absolus : Les chemins absolus comme /html/body/div[2]/div[3]/span sont facilement sujets ร des erreurs. Utilisez des expressions XPath relatives avec des attributs tels que //input[@name='userName'].
- Combiner les attributs pour plus de prรฉcision : Lorsqu'un seul attribut n'est pas unique, combinez plusieurs attributs (par exemple, //button[@type='submit' et @name='login']) pour cibler l'รฉlรฉment correct.
- Utilisez le texte ร bon escient : Les localisateurs qui dรฉpendent du texte visible peuvent ne pas fonctionner correctement selon les traductions. N'utilisez les localisateurs textuels que lorsque le contenu est stable et unilingue.
- Centraliser les localisateurs : Stockez les localisateurs dans une classe Page Object Model (POM) afin que les mises ร jour puissent รชtre effectuรฉes ร un seul endroit plutรดt que dans de nombreux scripts de test.
- Valider dans les outils de dรฉveloppement : Avant d'ajouter un localisateur ร un script, testez-le dans la console du navigateur en utilisant $x("//xpath") pour XPath ou document.querySelector pour CSS afin de confirmer qu'il renvoie exactement un รฉlรฉment.
- รvitez autant que possible les localisateurs basรฉs sur l'index : Les positions d'index comme [3] dรฉpendent de l'ordre des รฉlรฉments. Mรชme des modifications mineures de la mise en page peuvent dรฉcaler l'index et perturber le script.
En appliquant ces pratiques de maniรจre cohรฉrente, les ingรฉnieurs en automatisation crรฉent des suites de tests qui s'adaptent ร toutes les รฉquipes et rรฉsistent aux frรฉquentes mises ร jour de l'interface utilisateur avec un minimum de maintenance.





























