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.
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 :
| 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. |


