FindElement par XPath dans Selenium

โšก Rรฉsumรฉ intelligent

FindElement par XPath dans Selenium La premiรจre commande identifie de maniรจre unique un รฉlรฉment web sur une page, tandis que la seconde renvoie la liste complรจte des รฉlรฉments correspondants. Ces deux commandes acceptent un objet de localisation By prenant en charge les stratรฉgies ID, Name, Class Name et XPath.

  • โœ… Principe de base : FindElement renvoie le premier WebElement correspondant ; FindElements renvoie une liste indexรฉe ร  partir de zรฉro, comme un tableau.
  • โš ๏ธ Gestion des exceptions: La fonction FindElement lรจve une exception NoSuchElementException lorsqu'aucune correspondance n'existe, tandis que la fonction FindElements renvoie une liste vide au lieu d'รฉchouer.
  • ๐Ÿงญ Stratรฉgies de localisation : Choisissez parmi les options suivantes : ID, Nom, Nom de classe, Nom de balise, Texte du lien, Texte partiel du lien et XPath.
  • ๐Ÿงฉ Objectif de mise en ล“uvre : Transmettez de maniรจre fiable un objet By avec une valeur de localisation unique aux รฉlรฉments cibles dans les scripts WebDriver.
  • ๐Ÿš€ Application pratique: Working : un espace de travail commun Java Les exemples illustrent le clic sur un bouton radio et le parcours d'une liste d'รฉlรฉments sur une page de dรฉmonstration.

FindElement par XPath dans Selenium

In Selenium WebDriver, TrouverElement et Trouver les รฉlรฉments sont les commandes de base utilisรฉes pour localiser les รฉlรฉments Web sur une page avant qu'une action, telle qu'un clic ou une saisie de texte, puisse รชtre effectuรฉe sur ceux-ci.

Pourquoi avez-vous besoin de la commande Rechercher un ou plusieurs รฉlรฉments ?

Pour interagir avec une page web, l'utilisateur doit d'abord localiser l'รฉlรฉment web. La commande ยซ Rechercher un รฉlรฉment ยป permet d'identifier un รฉlรฉment web unique au sein de la page, tandis que la commande ยซ Rechercher des รฉlรฉments ยป permet d'identifier une liste d'รฉlรฉments web. Un รฉlรฉment peut รชtre identifiรฉ ร  l'aide de plusieurs stratรฉgies de localisation tels que l'identifiant, le nom, le nom de la classe, le texte du lien, le texte partiel du lien, le nom de la balise et XPath.

Syntaxe de la commande FindElement

Voici la syntaxe de la commande FindElement dans Selenium Pilote Web :

WebElement elementName = driver.findElement(By.LocatorStrategy("LocatorValue"));

La commande FindElement prend l'objet By comme paramรจtre et renvoie un objet unique de type WebElement. Cet objet By peut ensuite รชtre utilisรฉ avec diffรฉrentes stratรฉgies de localisation telles que l'ID, le nom, le nom de classe, XPath, etc.

La stratรฉgie de localisation peut prendre l'une des valeurs suivantes :

  • ID
  • Nom
  • Nom du cours
  • Nom de la balise
  • link Text
  • Texte de lien partiel
  • XPath

La valeur de localisation est la valeur unique permettant d'identifier un รฉlรฉment web. Il incombe aux dรฉveloppeurs et aux testeurs de s'assurer que les รฉlรฉments web sont identifiables de maniรจre unique grรขce ร  certaines propriรฉtรฉs telles que l'ID ou le nom.

Exemple :

WebElement loginLink = driver.findElement(By.linkText("Login"));

Exemple : Rechercher un รฉlรฉment dans Selenium

L'application de dรฉmonstration suivante est utilisรฉe pour illustrer la commande FindElement en action :

https://demo.guru99.com/test/ajax.html

Scรฉnario:

ร‰tape 1 : Ouvrez l'AUT

ร‰tape 2 : Trouvez et cliquez sur le bouton radio, puis cliquez sur le bouton Vรฉrifier

package com.sample.stepdefinitions;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class NameDemo {

public static void main(String[] args) {
// TODO Auto-generated method stub

System.setProperty("webdriver.chrome.driver", "D:\\3rdparty\\chrome\\chromedriver.exe");
WebDriver driver = new ChromeDriver();
driver.manage().window().maximize();

driver.get("https://demo.guru99.com/test/ajax.html");

// Find the radio button for โ€œNoโ€ using its ID and click on it
driver.findElement(By.id("no")).click();

//Click on Check Button
driver.findElement(By.id("buttoncheck")).click();

}

}

Syntaxe de la commande FindElements

Lorsque vous avez besoin de tous les รฉlรฉments correspondant ร  un localisateur plutรดt que du premier, utilisez FindElements. Voici sa syntaxe :

List<WebElement> elementName = driver.findElements(By.LocatorStrategy("LocatorValue"));

La commande FindElements prend l'objet By comme paramรจtre et renvoie une liste d'รฉlรฉments web. Elle renvoie une liste vide si aucun รฉlรฉment n'est trouvรฉ ร  l'aide de la stratรฉgie et de la valeur de localisation spรฉcifiรฉes.

Exemple :

List<WebElement> listOfElements = driver.findElements(By.xpath("//div"));

Exemple : Rechercher des รฉlรฉments dans Selenium

La mรชme application de dรฉmonstration est utilisรฉe pour montrer comment FindElements parcourt une liste d'รฉlรฉments correspondants.

Scรฉnario:

ร‰tape 1 : Ouvrez le URL pour l'application en cours d'essai

ร‰tape 2 : Trouvez le texte des boutons radio et affichez-le sur la console de sortie.

package com.sample.stepdefinitions;

import java.util.List;

import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;

public class NameDemo {

public static void main(String[] args) {

    System.setProperty("webdriver.chrome.driver", "X://chromedriver.exe");
    WebDriver driver = new ChromeDriver();
    driver.get("https://demo.guru99.com/test/ajax.html");
    List<WebElement> elements = driver.findElements(By.name("name"));
    System.out.println("Number of elements:" +elements.size());

    for (int i=0; i<elements.size();i++){
      System.out.println("Radio button text:" + elements.get(i).getAttribute("value"));
    }
  }
}

Rechercher un รฉlรฉment vs Rechercher des รฉlรฉments

Voici les principales diffรฉrences entre les commandes Rechercher un รฉlรฉment et Rechercher des รฉlรฉments :

Trouver un รฉlรฉment vs Trouver des รฉlรฉments dans Selenium

Rechercher un รฉlรฉment Rechercher des รฉlรฉments
Renvoie le premier รฉlรฉment web s'il existe plusieurs รฉlรฉments web trouvรฉs avec le mรชme localisateur. Renvoie une liste d'รฉlรฉments Web
Lรจve l'exception NoSuchElementException s'il n'existe aucun รฉlรฉment correspondant ร  la stratรฉgie de localisation. Renvoie une liste vide s'il n'y a aucun รฉlรฉment Web correspondant ร  la stratรฉgie de localisation
La recherche d'รฉlรฉments par XPath ne trouvera qu'un seul รฉlรฉment Web. Il trouvera un ensemble d'รฉlรฉments correspondant ร  la stratรฉgie de localisation.
Non applicable Chaque รฉlรฉment web est indexรฉ par un nombre commenรงant ร  0, comme un tableau.

FAQ

Utilisez le Selenium attentes implicites ou explicites Le pilote interroge donc la page jusqu'ร  ce que l'รฉlรฉment apparaisse. L'utilisation explicite de WebDriverWait et de conditions attendues constitue l'approche la plus fiable pour les pages dynamiques pilotรฉes par AJAX.

L'identifiant (ID) est le localisateur le plus rapide et le plus fiable, car les navigateurs l'indexent directement. Les sรฉlecteurs CSS sont gรฉnรฉralement plus rapides que XPath ; il est donc conseillรฉ de rรฉserver XPath aux cas oรน aucun identifiant, nom ou classe unique n'est disponible.

Oui. Les assistants de test basรฉs sur l'IA peuvent analyser le DOM et suggรฉrer automatiquement des localisateurs XPath ou CSS stables, rรฉduisant ainsi le temps d'inspection manuelle. RevVรฉrifier l'unicitรฉ des localisateurs gรฉnรฉrรฉs avant de les ajouter aux suites de tests de production.

Les frameworks d'auto-rรฉparation utilisent l'IA pour dรฉtecter les dysfonctionnements des localisateurs suite ร  une modification de l'interface utilisateur et les remplacer automatiquement par l'รฉlรฉment correspondant le plus proche. Cela rรฉduit la maintenance des tests liรฉe aux changements frรฉquents d'attributs d'รฉlรฉments.

Rรฉsumez cet article avec :