WebElement dans Selenium

โšก Rรฉsumรฉ intelligent

WebElement dans Selenium reprรฉsente chaque contrรดle de formulaire comme un objet programmable, permettant aux testeurs d'interagir avec les champs de texte, les cases ร  cocher, les boutons radio et les รฉlรฉments de soumission ร  l'aide des mรฉthodes findElement, sendKeys, click, clear et submit. Java exemples de code.

  • ๐Ÿงฉ Prรฉcision du localisateur : Identifiez les รฉlรฉments de formulaire par id, nom, xpath ou sรฉlecteur CSS via findElement() pour garantir une interaction stable avec le DOM.
  • โœ๏ธ Gestion des entrรฉes : Envoyez du texte modifiable dans des champs ร  l'aide de sendKeys() sans รฉcraser les valeurs existantes lors de l'exรฉcution automatisรฉe.
  • ๐Ÿงน Rรฉinitialisation du champ : Effacez les champs de saisie ร  l'aide de la mรฉthode clear() avant de saisir ร  nouveau des donnรฉes, afin d'รฉviter les valeurs rรฉsiduelles dans les assertions ultรฉrieures.
  • ๐Ÿ‡ง๐Ÿ‡ท Interaction avec les boutons : Dรฉclenchez des actions de connexion ou de navigation via la mรฉthode click() sur la rรฉfรฉrence WebElement correspondante.
  • (I.e. Soumission du formulaire : Utilisez la mรฉthode submit() sur n'importe quel รฉlรฉment d'un formulaire pour que WebDriver dรฉclenche automatiquement le gestionnaire de soumission du formulaire parent.
  • ๐Ÿ›ก๏ธ Conseil de stabilitรฉ : Ajoutez des dรฉlais d'attente implicites ou explicites avant les appels ร  findElement() pour รฉviter l'exception NoSuchElementException sur les pages chargรฉes dynamiquement.

WebElement dans Selenium

WebElement dans Selenium

Les formulaires sont des รฉlรฉments web fondamentaux qui permettent de recueillir des informations auprรจs des visiteurs d'un site web. Ils comprennent diffรฉrents contrรดles d'interface graphique tels que des zones de texte, des champs de mot de passe, des cases ร  cocher, des boutons radio, des listes dรฉroulantes et des champs de saisie de fichiers.

Ce tutoriel explique comment accรฉder ร  chaque รฉlรฉment de formulaire en utilisant Selenium WebDriver avec Java. Selenium encapsule chaque รฉlรฉment de formulaire en tant qu'objet de WebElement. Elle fournit une API permettant de localiser les รฉlรฉments et d'interagir avec eux, notamment en saisissant du texte, en cliquant sur des boutons et en soumettant des formulaires. Les sections suivantes dรฉtaillent les mรฉthodes disponibles pour chaque รฉlรฉment de formulaire.

Introduction ร  WebElement FindElement, FindElements

Introduction ร  WebElement, findElement(), findElements()

Selenium WebDriver reprรฉsente un รฉlรฉment de formulaire simple comme un objet de ร‰lรฉment Web.

WebDriver identifie les รฉlรฉments de formulaire ร  l'aide de diffรฉrentes propriรฉtรฉs de l'รฉlรฉment Web, notamment l'ID, le nom et la classe. XPath, Nom de la balise, sรฉlecteurs CSS et texte du lien.

WebDriver propose les deux mรฉthodes WebElement suivantes pour trouver des รฉlรฉments :

  • trouverร‰lรฉment() โ€“ trouve un seul รฉlรฉment web et le renvoie sous forme de WebElement Selenium objet.
  • findElements() โ€“ renvoie une liste d'objets WebElement correspondant aux critรจres du localisateur.

L'exemple ci-dessous montre comment rรฉcupรฉrer un รฉlรฉment unique, un champ texte sur une page web, sous forme d'objet WebElement ร  l'aide de la mรฉthode findElement(). La mรฉthode findElements() permettant de rechercher plusieurs รฉlรฉments est abordรฉe dans les tutoriels suivants.

ร‰tape 1) Importez le package nรฉcessaire ร  la crรฉation d'objets WebElement.

ร‰tape 2) Appelez la mรฉthode findElement() disponible sur la classe WebDriver pour rรฉcupรฉrer un objet WebElement, comme indiquรฉ ci-dessous.

Selenium Texte de saisie

Les zones de saisie font rรฉfรฉrence ร  l'un de ces deux types :

  1. Champs de texte - Selenium Des champs de saisie qui acceptent les valeurs saisies et les affichent exactement telles qu'elles ont รฉtรฉ saisies.
  2. Champs de mot de passe โ€“ des zones de texte qui acceptent les valeurs saisies mais les masquent sous forme d'une sรฉrie de caractรจres spรฉciaux (gรฉnรฉralement des points ou des astรฉrisques) afin de dissimuler les donnรฉes sensibles.

    Selenium Texte de saisie

Des localisateurs

La mรฉthode `findElement()` prend un paramรจtre : un localisateur pointant vers lโ€™รฉlรฉment. Diffรฉrents localisateurs, tels que `By.id()`, `By.name()`, `By.xpath()` et `By.cssSelector()`, permettent de trouver des รฉlรฉments sur la page grรขce ร  leurs propriรฉtรฉs, comme leur identifiant, leur nom ou leur chemin.

Vous pouvez utiliser des plugins comme FirePath pour obtenir l'identifiant, le XPath et d'autres valeurs de localisation pour les รฉlรฉments.

Utilisation du site exemple https://demo.guru99.com/test/login.htmlLe code ci-dessous localise le champ de texte ยซ Adresse e-mail ยป ร  l'aide du localisateur d'identifiant et le champ ยซ Mot de passe ยป ร  l'aide du localisateur de nom.

Des localisateurs

  1. Le champ de texte de l'adresse e-mail est localisรฉ par son identifiant.
  2. Le champ Mot de passe se trouve par nom.

envoyer les clรฉs dans Selenium

envoyerKeys() dans Selenium Cette mรฉthode permet de saisir du contenu modifiable dans les champs texte et mot de passe lors de l'exรฉcution de tests. Ces champs sont identifiรฉs par des localisateurs tels que le nom, la classe et l'identifiant. La mรฉthode est disponible sur l'objet WebElement. Contrairement ร  la mรฉthode de type, sendKeys() ne remplace pas le texte existant dans une zone de texte.

Comment saisir du texte dans Selenium

Pour saisir du texte dans les champs de texte et les champs de mot de passe, la mรฉthode sendKeys() est disponible sur l'รฉlรฉment WebElement. Selenium.

En utilisant le mรชme exemple de https://demo.guru99.com/test/login.html, l'extrait de code ci-dessous localise le champ de texte et le champ de mot de passe et y saisit du texte. Selenium.

Texte en Selenium

  1. Trouvez le champ de texte ยซ Adresse e-mail ยป ร  l'aide du localisateur d'identifiants.
  2. Trouvez le champ ยซ Mot de passe ยป ร  lโ€™aide du localisateur de noms.
  3. Saisissez du texte dans ยซ Adresse e-mail ยป ร  l'aide de la touche Selenium Mรฉthode sendKeys.
  4. Entrez un mot de passe dans le champ ยซ Mot de passe ยป en utilisant la mรฉthode sendKeys().

Suppression de valeurs en entrรฉe Boxes

Le clair() Cette mรฉthode supprime le texte contenu dans une zone de saisie. Cette mรฉthode ne nรฉcessite aucun paramรจtre. L'extrait de code ci-dessous efface le texte des champs Adresse รฉlectronique ou Mot de passe.

Suppression de valeurs en entrรฉe Boxes

Selenium Cliquez sur les boutons

Le Selenium Le bouton de clic est accessible via la mรฉthode click().

Dans l'exemple ci-dessus

  1. Trouvez le bouton pour vous connecter.
  2. Cliquez sur le bouton ยซ Se connecter ยป sur la page de connexion du site pour vous authentifier.

Selenium Cliquez sur les boutons

Selenium Boutons Soumettre

Les boutons d'envoi transmettent le formulaire complet au serveur. Vous pouvez soit appeler la mรฉthode click() sur l'รฉlรฉment WebElement, comme indiquรฉ ci-dessus, soit utiliser la mรฉthode submit() sur n'importe quel รฉlรฉment du formulaire ou sur le bouton d'envoi lui-mรชme.

Selenium Boutons Soumettre

Lorsque la fonction submit() est utilisรฉe, WebDriver consulte le DOM pour identifier le formulaire auquel appartient l'รฉlรฉment, puis dรฉclenche sa fonction de soumission.

Code

Voici le code complet et fonctionnel.

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

public class Form {
    public static void main(String[] args) {

        // declaration and instantiation of objects/variables
        System.setProperty("webdriver.chrome.driver", "G:\\chromedriver.exe");
        WebDriver driver = new ChromeDriver();

        String baseUrl = "https://demo.guru99.com/test/login.html";
        driver.get(baseUrl);

        // Get the WebElement corresponding to the Email Address(TextField)
        WebElement email = driver.findElement(By.id("email"));

        // Get the WebElement corresponding to the Password Field
        WebElement password = driver.findElement(By.name("passwd"));

        email.sendKeys("abcd@gmail.com");
        password.sendKeys("abcdefghlkjl");
        System.out.println("Text Field Set");

        // Deleting values in the text box
        email.clear();
        password.clear();
        System.out.println("Text Field Cleared");

        // Find the submit button
        WebElement login = driver.findElement(By.id("SubmitLogin"));

        // Using click method to submit form
        email.sendKeys("abcd@gmail.com");
        password.sendKeys("abcdefghlkjl");
        login.click();
        System.out.println("Login Done with Click");

        // Using submit method to submit the form. Submit used on password field
        driver.get(baseUrl);
        driver.findElement(By.id("email")).sendKeys("abcd@gmail.com");
        driver.findElement(By.name("passwd")).sendKeys("abcdefghlkjl");
        driver.findElement(By.id("SubmitLogin")).submit();
        System.out.println("Login Done with Submit");

        // driver.close();
    }
}

Dรฉpannage

Si vous rencontrez une exception NoSuchElementException() lors de la recherche d'รฉlรฉments, cela signifie que l'รฉlรฉment n'est pas prรฉsent sur la page au moment oรน WebDriver y a accรฉdรฉ.

  1. Revรฉrifiez votre localisateur ร  l'aide de FirePath ou de l'option ยซ Inspecter l'รฉlรฉment ยป dans Chrome.
  2. Vรฉrifiez si la valeur utilisรฉe dans le code diffรจre de la valeur actuelle de l'รฉlรฉment affichรฉe dans FirePath.
  3. Certains attributs sont dynamiques pour certains รฉlรฉments. Si une valeur change dynamiquement, utilisez `By.xpath()` ou `By.cssSelector()`, qui sont plus fiables mais lรฉgรจrement plus complexes.
  4. Il arrive que le problรจme soit liรฉ ร  une condition d'attente ; WebDriver peut exรฉcuter le code avant que la page ait fini de se charger.
  5. Ajoutez une attente avant findElement() en utilisant des attentes implicites ou explicites.

Rรฉsumรฉ

  • Le tableau ci-dessous rรฉcapitule les commandes permettant d'accรฉder ร  chaque type d'รฉlรฉment mentionnรฉ ci-dessus.
ร‰lรฉment Command Description
Entrรฉe Box sendKeys () Utilisรฉ pour saisir des valeurs dans des zones de texte.
clair() Utilisรฉ pour effacer la valeur actuelle des champs de texte.
Liens Cliquez sur() Permet de cliquer sur le lien et d'attendre que la page se charge complรจtement avant de passer ร  la commande suivante.
Bouton Soumettre nous faire parvenir() Utilisรฉ pour soumettre le formulaire en dรฉclenchant le gestionnaire de soumission du formulaire parent.
  • WebDriver permet la sรฉlection de plusieurs options dans un รฉlรฉment SELECT multiple.
  • Vous pouvez utiliser la mรฉthode submit() sur n'importe quel รฉlรฉment du formulaire. WebDriver dรฉclenche automatiquement la fonction submit du formulaire auquel appartient l'รฉlรฉment.

FAQ

La mรฉthode `findElement()` renvoie le premier รฉlรฉment WebElement correspondant et lรจve une exception `NoSuchElementException` si aucun ne correspond. La mรฉthode `findElements()` renvoie une liste d'รฉlรฉments WebElement correspondants et une liste vide si aucun รฉlรฉment ne correspond au localisateur.

Un WebElement est un Selenium Ce composant expose des mรฉthodes d'automatisation telles que sendKeys, click et clear. Un รฉlรฉment HTML correspond au nล“ud DOM sous-jacent. WebDriver localise ce nล“ud DOM et renvoie une rรฉfรฉrence WebElement pour permettre l'interaction.

Oui. Les outils d'IA analysent le DOM et proposent des localisateurs stables ร  l'aide d'identifiants, de noms, de chemins XPath relatifs ou de sรฉlecteurs CSS. Ils rรฉduisent la fragilitรฉ des localisateurs en dรฉtectant les combinaisons d'attributs uniques et en suggรฉrant des solutions de repli lorsqu'un attribut change.

Oui. Les localisateurs auto-rรฉparateurs pilotรฉs par l'IA relient automatiquement un รฉlรฉment Web lorsqu'un attribut change. Cela rรฉduit les dรฉfaillances intempestives, diminue les efforts de maintenance et assure la disponibilitรฉ des donnรฉes. Selenium Des suites stables malgrรฉ des mises ร  jour frรฉquentes de l'interface utilisateur dans les cycles de livraison agiles.

Les exceptions courantes de WebElement incluent StaleElementReferenceException, ElementNotInteractableException, ElementClickInterceptedException, InvalidElementStateException et TimeoutException. Chacune indique un problรจme diffรฉrent liรฉ au DOM, ร  la visibilitรฉ ou ร  la synchronisation, qui doit รชtre gรฉrรฉ par des attentes ou une actualisation des rรฉfรฉrences d'รฉlรฉments.

Rรฉsumez cet article avec :