Localisateurs dans Selenium
Que sont les localisateurs ?
Locator est une commande qui indique Selenium IDE quels รฉlรฉments de l'interface graphique (par exemple Texte Box, Boutons, Chรจque Boxes, etc.) ses besoins sont opรฉrationnels. L'identification des รฉlรฉments GUI corrects est une condition prรฉalable ร la crรฉation d'un script d'automatisation. Mais lโidentification prรฉcise des รฉlรฉments de lโinterface graphique est plus difficile quโil nโy paraรฎt. Parfois, vous finissez par travailler avec des รฉlรฉments dโinterface graphique incorrects ou sans aucun รฉlรฉment ! Ainsi, Selenium fournit un certain nombre de localisateurs pour localiser prรฉcisรฉment un รฉlรฉment de l'interface graphique
Il existe des commandes qui n'ont pas besoin de localisateur (comme la commande ยซ open ยป). Cependant, la plupart d'entre eux ont besoin de localisateurs d'รฉlรฉments dans Selenium pilote Web.
Le choix du localisateur dรฉpend en grande partie de votre application testรฉe. Dans ce tutoriel, nous allons basculer entre Facebook, le nouveau tours.demoaut sur la base des localisateurs pris en charge par ces applications. De mรชme dans votre Tests projet, vous sรฉlectionnerez l'un des localisateurs d'รฉlรฉments rรฉpertoriรฉs ci-dessus dans Selenium webdriver, en fonction de la prise en charge de votre application.
Localisation par ID
C'est la maniรจre la plus courante de localiser des รฉlรฉments puisque les identifiants sont censรฉs รชtre uniques pour chaque รฉlรฉment.
Target Format: id=id de l'รฉlรฉment
Pour cet exemple, nous utiliserons Facebook comme application de test car Mercury Les visites n'utilisent pas d'attributs d'identification.
รtape 1) Depuis la crรฉation de ce didacticiel, Facebook a modifiรฉ la conception de sa page de connexion. Utilisez cette page de dรฉmonstration https://demo.guru99.com/test/facebook.html pour tester. Inspectez la zone de texte ยซ E-mail ou tรฉlรฉphone ยป ร l'aide de Firebug et notez son identifiant. Dans ce cas, lโidentifiant est ยซ email ยป.
รtape 2) Lancement Selenium IDE et entrez ยซ id=email ยป dans le champ Target boรฎte. Cliquez sur le bouton Rechercher et remarquez que la zone de texte ยซ E-mail ou tรฉlรฉphone ยป est surlignรฉe en jaune et bordรฉe de vert, ce qui signifie que Selenium L'IDE a pu localiser cet รฉlรฉment correctement.
Localisation par nom
La localisation des รฉlรฉments par nom est trรจs similaire ร la localisation par ID, sauf que nous utilisons le "nom =" prรฉfixe ร la place.
Target Format: name=nom de l'รฉlรฉment
Dans la dรฉmonstration suivante, nous allons maintenant utiliser Mercury Tours car tous les รฉlรฉments significatifs ont des noms.
รtape 1) Accรฉdez ร https://demo.guru99.com/test/newtours/ et utilisez Firebug pour inspecter la zone de texte ยซ Nom d'utilisateur ยป. Prenez note de son attribut name.
Ici, nous voyons que 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 pouvoir localiser la zone de texte Nom d'utilisateur en la mettant en surbrillance.
Comment localiser un รฉlรฉment par nom ร l'aide de filtres
Les filtres peuvent รชtre utilisรฉs lorsque plusieurs รฉlรฉments portent le mรชme nom. Les filtres sont des attributs supplรฉmentaires utilisรฉs pour distinguer les รฉlรฉments portant le mรชme nom.
Target Format: nom=nom_of_the_element filtre=valeur_of_filter
Voyons un exemple -
รtape 1) Connectez-vous sur Mercury tournรฉes.
Connectez-vous sur Mercury Visites utilisant ยซ tutoriel ยป comme nom d'utilisateur et mot de passe. Cela devrait vous amener ร la page Flight Finder illustrรฉe ci-dessous.
รtape 2) En utilisant Firebug, utilisez les attributs VALUE.
ร l'aide de Firebug, notez que les boutons radio Round Trip et One Way portent le mรชme nom ยซ tripType ยป. Cependant, ils ont des attributs VALUE diffรฉrents, nous pouvons donc utiliser chacun d'eux comme filtre.
รtape 3) Cliquez sur la premiรจre ligne.
- Nous allons dโabord accรฉder au bouton radio One Way. Cliquez sur la premiรจre ligne de l'รฉditeur.
- Dans la boรฎte de commande de Selenium IDE, entrez la commande ยซ clic ยป.
- Dans l' Target Dans la case, saisissez ยซ name=tripType value=oneway ยป. La partie ยซ value=oneway ยป est notre filtre.
รtape 4) Cliquez sur le bouton Rechercher.
Remarquerez que Selenium L'IDE est capable de mettre en surbrillance le bouton radio One Way en vert, ce qui signifie que nous pouvons accรฉder ร l'รฉlรฉment avec succรจs en utilisant son attribut VALUE.
รtape 5) Sรฉlectionnez le bouton radio One Way.
Appuyez sur la touche ยซ X ยป de votre clavier pour exรฉcuter cette commande de clic. Notez que le bouton radio One Way a รฉtรฉ sรฉlectionnรฉ.
Vous pouvez faire exactement la mรชme chose avec le bouton radio Round Trip, cette fois, en utilisant ยซ name=tripType value=roundtrip ยป comme cible.
Localisation par texte de lien
Ce type de localisateur CSS dans Selenium s'applique uniquement aux textes de liens hypertexte. Nous accรฉdons au lien en prรฉfixant notre cible avec ยซ link= ยป puis suivi du texte du lien hypertexte.
Target Format: lien=lien_texte
Dans cet exemple, nous accรฉderons au lien ยซ S'INSCRIRE ยป prรฉsent sur le Mercury Page d'accueil des visites.
รtape 1)
- Tout d'abord, assurez-vous que vous รชtes dรฉconnectรฉ de Mercury tournรฉes.
- Allez dans Mercury Page d'accueil des visites.
รtape 2)
- ร l'aide de Firebug, inspectez le lien ยซ ENREGISTRER ยป. Le texte du lien se trouve entre les balises et.
- Dans ce cas, le texte de notre lien est ยซ INSCRIPTION ยป. Copiez le texte du lien.
รtape 3) Copiez le texte du lien dans Firebug et collez-le dessus Selenium IDE Target boรฎte. Prรฉfixez-le avec ยซ link = ยป.
รtape 4) Cliquez sur le bouton Rechercher et remarquez que Selenium L'IDE a pu mettre en รฉvidence correctement le lien REGISTER.
รtape 5) Pour vรฉrifier davantage, entrez ยซ clickAndWait ยป dans la zone de commande et exรฉcutez-la. Selenium L'IDE devrait pouvoir cliquer avec succรจs sur ce lien INSCRIPTION et vous diriger vers la page d'inscription ci-dessous.
Localisation par DOM (Document Object Model)
L' Modรจle d'objet de document (DOM), en termes simples, est la maniรจre dont les รฉlรฉments HTML sont structurรฉs. Selenium L'IDE est capable d'utiliser le DOM pour accรฉder aux รฉlรฉments de la page. Si nous utilisons cette mรฉthode, notre Target la boรฎte commencera toujours par ยซ dom=documentโฆ ยป ; cependant, le prรฉfixe ยซ dom= ยป est normalement supprimรฉ car Selenium L'IDE est capable d'interprรฉter automatiquement tout ce qui commence par le mot-clรฉ ยซ document ยป comme รฉtant un chemin dans le DOM dans Selenium de toute faรงon.
Il existe quatre maniรจres de base de localiser un รฉlรฉment via DOM dans Selenium:
- getElementById
- getElementsByName
- dom:name (s'applique uniquement aux รฉlรฉments d'un formulaire nommรฉ)
- dom:index
Localisation par DOM โ getElementById
Concentrons-nous sur la premiรจre mรฉthode โ en utilisant la mรฉthode getElementById du DOM dans Selenium. La syntaxe serait :
Syntaxe
document.getElementById("id of the element")
- id de l'รฉlรฉment = c'est la valeur de l'attribut ID de l'รฉlรฉment auquel accรฉder. Cette valeur doit toujours รชtre entourรฉe de parenthรจses (ยซ ยป).
รtape 1) Utilisez cette page de dรฉmonstration https://demo.guru99.com/test/facebook.html Accรฉdez-y et utilisez Firebug pour inspecter la case ร cocher ยซ Gardez-moi connectรฉ ยป. Prenez note de son identifiant.
Nous pouvons voir que l'ID que nous devons utiliser est ยซ persist_box ยป.
รtape 2) Ouvrez Selenium IDE et dans le Target boรฎte, entrez ยซ document.getElementById(โpersist_boxโ) ยป et cliquez sur Rechercher. Selenium L'IDE devrait pouvoir localiser la case ร cocher ยซ Rester connectรฉ ยป. Bien qu'il ne puisse pas mettre en surbrillance l'intรฉrieur de la case ร cocher, Selenium L'IDE peut toujours entourer l'รฉlรฉment d'une bordure vert vif, comme indiquรฉ ci-dessous.
Localisation par DOM โ getElementsByName
La mรฉthode getElementById ne peut accรฉder qu'ร un seul รฉlรฉment ร la fois, ร savoir l'รฉlรฉment portant l'ID que vous avez spรฉcifiรฉ. La mรฉthode getElementsByName est diffรฉrente. Il collecte un tableau d'รฉlรฉments portant le nom que vous avez spรฉcifiรฉ. Vous accรฉdez aux รฉlรฉments individuels ร l'aide d'un index qui commence ร 0.
|
getElementById
|
|
|
getElementsByName
|
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 ร Mercury Page d'accueil de Tours et connectez-vous en utilisant ยซ tutoriel ยป comme nom d'utilisateur et mot de passe. Firefox devrait vous amener ร lโรฉcran Flight Finder.
รtape 2) ร lโaide de Firebug, inspectez les trois boutons radio dans la partie infรฉrieure de la page (boutons radio Classe รconomique, Classe Affaires et Premiรจre classe). Notez qu'ils portent tous le mรชme nom qui est ยซ servClass ยป.
รtape 3) Accรฉdons d'abord au bouton radio ยซClasse รฉconomiqueยป. De ces trois boutons radio, cet รฉlรฉment vient en premier, il a donc un indice de 0. Dans Selenium IDE, tapez ยซ document.getElementsByName(ยซ servClass ยป)[0] ยป et cliquez sur le bouton Rechercher. Selenium IDE devrait รชtre capable dโidentifier correctement le bouton radio de la classe รฉconomique.
รtape 4) Remplacez le numรฉro d'index par 1 afin que votre Target deviendra dรฉsormais document.getElementsByName("servClass")[1]. Cliquez sur le bouton Rechercher et Selenium L'IDE devrait pouvoir mettre en surbrillance le bouton radio ยซ Classe affaires ยป, comme indiquรฉ ci-dessous.
Localisation par DOM โ dom:name
Comme mentionnรฉ prรฉcรฉdemment, cette mรฉthode ne s'appliquera que si l'รฉlรฉment auquel vous accรฉdez est contenu dans un formulaire nommรฉ.
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/ et utilisez Firebug pour inspecter la zone de texte Nom d'utilisateur. Notez qu'il est contenu dans un formulaire nommรฉ ยซ home ยป.
รtape 2) In Selenium IDE, tapez ยซ document.forms[ยซ home ยป].elements[ยซ userName ยป] ยป et cliquez sur le bouton Rechercher. Selenium L'IDE doit pouvoir accรฉder ร l'รฉlรฉment avec succรจs.
Localisation par DOM โ dom:index
Cette mรฉthode s'applique mรชme lorsque l'รฉlรฉment ne se trouve pas dans un formulaire nommรฉ car il utilise l'index du formulaire et non son nom.
Syntaxe
document.forms[index of the form].elements[index of the element]
- index du formulaire = le numรฉro d'index (commenรงant ร 0) du formulaire par rapport ร la page entiรจre
- index de l'รฉlรฉment = le numรฉro d'index (commenรงant ร 0) de l'รฉlรฉment par rapport ร l'ensemble du formulaire qui le contient
Nous accรฉderons ร la zone de texte ยซ Tรฉlรฉphone ยป dans Mercury Page d'inscription aux visites. Le formulaire de cette page n'a pas d'attribut de nom ni d'ID, ce sera donc un bon exemple.
รtape 1) Accรฉdez ร Mercury Page d'inscription aux visites et inspectez la zone de texte Tรฉlรฉphone. Notez que le formulaire qui la contient n'a pas d'attributs ID et nom.
รtape 2) Saisissez ยซ document.forms[0].elements[3] ยป dans Selenium IDE Target case et cliquez sur le bouton Rechercher. Selenium L'IDE devrait pouvoir accรฉder correctement ร la zone de texte Tรฉlรฉphone.
รtape 3) Alternativement, vous pouvez utiliser le nom de l'รฉlรฉment au lieu de son index et obtenir le mรชme rรฉsultat. Saisissez ยซ document.forms[0].elements[ยซ phone ยป] ยป dans Selenium IDE Target boรฎte. La zone de texte Tรฉlรฉphone doit toujours รชtre mise en surbrillance.
Localisation par XPath
XPath est le langage utilisรฉ lors de la localisation des nลuds XML (Extensible Markup Language). Puisque HTML peut รชtre considรฉrรฉ comme une implรฉmentation de XML, nous pouvons รฉgalement utiliser XPath dans la localisation des รฉlรฉments HTML.
- Avantage: Il peut accรฉder ร presque tous les รฉlรฉments, mรชme ceux sans attributs de classe, de nom ou d'identifiant.
- Dรฉsavantage: Il sโagit de la mรฉthode dโidentification dโรฉlรฉments la plus compliquรฉe en raison du trop grand nombre de rรจgles et de considรฉrations diffรฉrentes.
Heureusement, Firebug peut gรฉnรฉrer automatiquement XPath Selenium localisateurs. Dans l'exemple suivant, nous allons accรฉder ร une image qui ne peut pas รชtre accessible via les mรฉthodes que nous avons dรฉcrites prรฉcรฉdemment.
รtape 1) Accรฉdez ร Mercury Visitez la page d'accueil de Tours et utilisez Firebug pour inspecter le rectangle orange ร droite de la case jaune ยซ Liens ยป. Reportez-vous ร l'image 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, tapez une barre oblique ยซ / ยป dans le champ Target boรฎte puis collez le XPath que nous avons copiรฉ ร l'รฉtape prรฉcรฉdente. L'entrรฉe dans votre Target la boรฎte doit maintenant commencer par deux barres obliques ยซ // ยป.
รtape 4) Cliquez sur le bouton Rechercher. Selenium L'IDE devrait pouvoir mettre en รฉvidence la case orange comme indiquรฉ ci-dessous.
Rรฉsumรฉ
Syntaxe d'utilisation du localisateur
| Mรฉthode | Target Syntaxe | Exemple |
|---|---|---|
| Par piรจce d'identitรฉ | id= id_of_the_element | identifiant = email |
| De nom | nom=nom_de_l'รฉlรฉment | nom = nom d'utilisateur |
| Par nom ร l'aide de filtres | nom=nom_de_l'รฉlรฉment filtre=valeur_du_filtre | nom = valeur du type de voyage = aller simple |
| Par texte de lien | lien=lien_texte | lien=INSCRIPTION |





























