Trouver des éléments sur la page web peut être un cauchemar en raison de la complexité des éléments web. Cependant, les éléments web jouent un rôle essentiel dans le développement et le test de toute application. Pour faciliter les choses aux testeurs, cet article offrira un aperçu de Selenium findElement et findElements à l’aide d’un exemple.
Voici ce que l’article va couvrir :
- Introduction à Selenium findElement
- Différence entre findElement et findElements
- Syntaxe de Selenium findElement
- Types de localisateurs
- Utilisation du localisateur. Stratégie pour findElement
Introduction à Selenium findElement
L’interaction avec une page web nécessite que le pilote localise un élément web et déclenche soit un événement JavaScript comme un clic, entrée, sélection, etc. soit taper la valeur du champ. Habituellement, on commence les tests automatisés de toute application web en trouvant les éléments web pertinents sur la page web. Le plus souvent, ces tests automatisés sont exécutés en utilisant des frameworks comme Selenium WebDriver.
Selenium définit deux méthodes pour identifier les éléments web :
- findElement : Une commande utilisée pour identifier de manière unique un élément web au sein de la page web.
- findElements : Une commande utilisée pour identifier une liste d’éléments web au sein de la page web.
Comprenons plus en détail la différence entre ces deux méthodes.
Différence entre findElement et findElements
findElement | findElements |
Retourne le premier élément web correspondant si plusieurs éléments web sont découverts par le localisateur | Retourne une liste d’éléments web correspondants multiples |
Jette NoSuchElementException si l’élément n’est pas trouvé | Retourne une liste vide si aucun élément correspondant n’est trouvé |
Détecte un élément web unique. element | Retourne une collection d’éléments correspondants |
Pour comprendre certaines commandes fondamentales de Selenium, jetez un coup d’œil à Commandes de base de Selenium Webdriver.
Syntaxe de Selenium findElement
La commande findElement renvoie un objet de type WebElement. Elle peut utiliser diverses stratégies de localisation telles que ID, Name, ClassName, texte de lien, XPath, etc.
Voici la syntaxe :
WebElement elementName = driver.findElement(By.LocatorStrategy("LocatorValue"));
Locator Strategy comprend les valeurs suivantes .
- ID
- Nom
- Nom de classe
- Nom d’étiquette
- Texte de lien
- XPath
La valeur du localisateur est la méthode unique avec laquelle on peut facilement identifier l’élément web.
Exemple:
driver.findElement(By.xpath("//input")).sendKeys("Guitar");
Syntaxe de Selenium findElements
La commande findElements renvoie une liste vide si aucun élément n’a été trouvé à l’aide de la stratégie de localisation et de la valeur de localisation données. Voici la syntaxe de la commande findElements.
List<WebElement> elementName = driver.findElements(By.LocatorStrategy("LocatorValue"));
Exemple:
List<WebElement> listOfElements = driver.findElements(By.xpath("//div"));
Essayez gratuitement le test Selenium
Maintenant, approfondissons notre compréhension de la façon de trouver des éléments web à l’aide de divers localisateurs. On peut référencer différents types de localisateurs dans Selenium.
Comprenons comment utiliser Selenium findElement de différentes manières :
Recherche par ID
L’ID est défini de manière unique pour chaque élément et c’est la manière la plus courante de localiser des éléments en utilisant ID Locator. Si un site web a des ids générés dynamiquement, alors cette stratégie ne peut pas être utilisée pour trouver de manière unique un élément. Cependant, elle renverra le premier élément web qui correspond au localisateur.
Exemple : Prenons www.amazon.com pour automatiser et trouver les éléments. Lorsque l’on navigue dans la boîte de recherche et que l’on inspecte l’élément, on pourra voir divers éléments web comme le montre l’instantané ci-dessous.
Comme vous pouvez le voir, il comprend un localisateur d’ID dont la valeur est twotabsearchtextbox. Le snippet ci-dessous utilise la même valeur de localisateur pour écrire un programme.
Trouver par nom
Ceci est similaire à Find By ID sauf que le pilote va localiser un élément par l’attribut « name » au lieu de « id ».
Exemple : Considérons la même page web d’amazon. La boîte de recherche possède également un localisateur de nom dont la valeur est « field-keywords », comme le montre l’instantané ci-dessous.
L’ensemble du code reste similaire à celui du localisateur d’ID, sauf que la différence se fera au niveau de la syntaxe findElement.
elementName = driver.findElement(By.name("field-keywords"))
Find By LinkText
Le LinkText est utile pour trouver des liens dans une page web. C’est le moyen le plus efficace de trouver des éléments web contenant des liens.
Maintenant, localisez un lien Returns comme indiqué ci-dessous.
Lorsque le testeur frappe ce lien et inspecte, il localise le texte du lien Returns comme indiqué dans l’instantané ci-dessous.
Ce texte peut être localisé simplement en utilisant Selenium findElement avec la syntaxe ci-dessous:
elementLinktext = driver.findElement(By.linkText("Returns”))
Recherche par sélecteur CSS
Le sélecteur CSS est utilisé pour fournir des règles de style pour les pages Web et peut également être utilisé pour identifier un ou plusieurs éléments Web.
Exemple : Considérons la même boîte de recherche de la page Amazon. Elle possède un attribut class dont la valeur est nav-search-input. En utilisant la même valeur, la méthode Selenium findElement peut localiser l’élément.
elementcss= driver.findElement(By.cssSelector('div.nav-search-input'))
Recherche par XPath
XPath est une technique dans Selenium pour naviguer dans la structure HTML d’une page. XPath permet aux testeurs de naviguer dans la structure XML de n’importe quel document et peut être utilisé sur les documents HTML et XML.
Exemple : Essayons de localiser la même barre de recherche dans Amazon avec l’aide de XPath. Le code ci-dessous montre qu’il contient un localisateur d’identifiant. Notez que le XPath relatif commence par ‘//’.
Dans l’image ci-dessous, on peut voir une balise input. Commencez par //input. Ici, //input implique un nom de balise. Utilisez l’attribut id et passez twotabsearchtextbox entre guillemets simples comme valeur. Cela donnera l’expression XPath présentée ci-dessous :
//input
Maintenant, à l’aide de la méthode Selenium findElement, exécutez le code ci-dessous :
elementxpath = driver.findElement(By.xpath("//input"))
Exécuter gratuitement des tests Selenium sur des appareils réels
La localisation des éléments web est à la base des tests Selenium automatisés des sites web et des applications web. Pour en savoir plus sur les principes fondamentaux de Selenium, jetez un coup d’œil au tutoriel Selenium WebDriver.
.