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 ยป.

Localisation par ID

ร‰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 ID

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.

Localisation par nom

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.

Localisation par nom

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.

Localiser l'รฉlรฉment par nom ร  l'aide de filtres

ร‰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.

Localiser l'รฉlรฉment par nom ร  l'aide de filtres

ร‰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.

Localiser l'รฉlรฉment par nom ร  l'aide de filtres

ร‰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.

Localiser l'รฉlรฉment par nom ร  l'aide de filtres

ร‰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รฉ.

Localiser l'รฉlรฉment par nom ร  l'aide de filtres

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.

Localisation par texte de lien

ร‰tape 3) Copiez le texte du lien dans Firebug et collez-le dessus Selenium IDE Target boรฎte. Prรฉfixez-le avec ยซ link = ยป.

Localisation par texte de lien

ร‰tape 4) Cliquez sur le bouton Rechercher et remarquez que Selenium L'IDE a pu mettre en รฉvidence correctement le lien REGISTER.

Localisation par texte de lien

ร‰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 texte de lien

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.

Localisation par DOM โ€“ getElementById

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 โ€“ getElementById

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.

Localisation par DOM โ€“ getElementsByName

getElementById

  • Il n'aura qu'un seul รฉlรฉment pour vous.
  • Cet รฉlรฉment porte l'ID que vous avez spรฉcifiรฉ entre parenthรจses de getElementById().

Localisation par DOM โ€“ getElementsByName

getElementsByName

  • Il obtiendra une collection dโ€™รฉlรฉments dont les noms sont tous identiques.
  • Chaque รฉlรฉment est indexรฉ avec un nombre commenรงant ร  0 tout comme un tableau
  • Vous spรฉcifiez ร  quel รฉlรฉment vous souhaitez accรฉder en mettant son numรฉro d'index entre crochets dans la syntaxe de getElementsByName ci-dessous.

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 ยป.

Localisation par DOM โ€“ getElementsByName

ร‰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.

Localisation par DOM โ€“ getElementsByName

ร‰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 โ€“ getElementsByName

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 ยป.

Localisation par DOM โ€“ dom:name

ร‰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:name

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.

Localisation par DOM โ€“ dom:index

ร‰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.

Localisation par DOM โ€“ dom:index

ร‰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 DOM โ€“ dom:index

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.

Localisation par XPath

ร‰tape 2) Faites un clic droit sur le code HTML de l'รฉlรฉment puis sรฉlectionnez l'option ยซ Copier XPath ยป.

Localisation par 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 ยซ // ยป.

Localisation par XPath

ร‰tape 4) Cliquez sur le bouton Rechercher. Selenium L'IDE devrait pouvoir mettre en รฉvidence la case orange comme indiquรฉ ci-dessous.

Localisation par XPath

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

Rรฉsumez cet article avec :