Référentiel d'objets dans Selenium

⚡ Résumé intelligent

Référentiel d'objets dans Selenium Cette méthode centralise les localisateurs d'éléments dans un fichier externe unique, les séparant ainsi des scripts de test. Elle facilite la maintenance et permet aux testeurs de mettre à jour les localisateurs en un seul endroit, plutôt que de devoir modifier de nombreux cas de test.

  • 🇧🇷 Concept de base: Stocke les localisateurs d'interface utilisateur sous forme de paires clé-valeur, conservées séparément de Selenium Logique de test WebDriver.
  • 📄 Approche par fichier de propriétés : Stockez les localisateurs dans un fichier texte .properties, lu lors de l'exécution via la classe java.util.Properties.
  • 🧩 Approche par fichier XML : Utilisez un fichier XML avec le modèle d'objet de document et dom4j pour lire les localisateurs via selectSingleNode.
  • 🔧 Flux de mise en œuvre : Créez le fichier, stockez les données clé-valeur, lisez les valeurs dans des variables, puis transmettez-les à findElement.
  • 🛡️ Prestation d'entretien : Lorsqu'un localisateur change, mettez à jour uniquement le fichier du référentiel, et non chaque cas de test concerné.

Référentiel d'objets dans Selenium

Qu'est-ce qu'un référentiel d'objets ?

Un référentiel d'objets est un emplacement de stockage commun pour tous les objets. Dans Selenium Dans le contexte WebDriver, les objets sont généralement les localisateurs utilisés pour identifier de manière unique les éléments Web.

Le principal avantage de l'utilisation d'un référentiel d'objets réside dans la séparation des objets et des cas de test. Si la valeur du localisateur d'un élément web change, seul le référentiel d'objets doit être modifié, évitant ainsi de modifier tous les cas de test utilisant ce localisateur. La maintenance d'un référentiel d'objets accroît la modularité de l'implémentation du framework.

Types de référentiels d'objets dans Selenium Pilote Web

Selenium WebDriver ne propose pas de référentiel d'objets intégré par défaut. Cependant, il est possible de créer des référentiels d'objets à l'aide de paires clé-valeur, où la clé correspond au nom de l'objet et la valeur aux propriétés permettant de l'identifier de manière unique au sein de la page web.

Voici les types de référentiels d'objets qui peuvent être créés dans Selenium Pilote Web.

  1. Référentiel d'objets utilisant le fichier de propriétés
  2. Référentiel d'objets utilisant un fichier XML

Selenium Référentiel d'objets de pilote Web utilisant le fichier de propriétés

Dans cette approche, un fichier de propriétés est un fichier texte où les données sont stockées sous forme de paires clé-valeur. Le tutoriel ci-dessous abordera les sujets suivants.

Étape 1) Création d'un fichier de propriétés dans Eclipse

  1. Pour commencer, il est nécessaire de créer dans Eclipse la structure de projet Java ci-dessous. Le nom du projet et le nom du package peuvent être n'importe quels noms valides.

Création d'un fichier de propriétés dans Eclipse

  1. Faites un clic droit sur le dossier principal du projet et sélectionnez Nouveau -> Autre

Création d'un fichier de propriétés dans Eclipse

  1. Dans la fenêtre suivante, sélectionnez Général -> Fichier et cliquez sur le bouton « Suivant ».

Création d'un fichier de propriétés dans Eclipse

  1. Saisissez un nom de fichier valide avec l'extension '.properties' dans la nouvelle fenêtre de ressources de fichier, puis cliquez sur le bouton « Terminer ».

Création d'un fichier de propriétés dans Eclipse

  1. Un fichier nommé « application.properties » doit être affiché dans la structure du projet.

Création d'un fichier de propriétés dans Eclipse

Étape 2) Stockage des données dans le fichier de propriétés

  1. Les données sont stockées dans un fichier de propriétés sous forme de paires clé-valeur, la clé étant unique dans tout le fichier.
  2. Nous allons essayer d'utiliser le fichier de propriétés pour identifier les éléments Web à l'aide des valeurs de localisation.
  3. Ouvrez le fichier application.properties dans Eclipse et stocker les données suivantes
MobileTesting=//a[text()='MOBILE TESTING']
EmailTextBox = philadelphia-field-email
SignUpButton = philadelphia-field-submit

Stockage des données dans un fichier de propriétés

4) Pour ce didacticiel, le site Web de démonstration suivant est utilisé :

https://demo.guru99.com/test/guru99home/Voici le scénario de test :

  • Cliquez sur le lien « Tests mobiles » en utilisant XPATH.
  • Revenir en arrière
  • Saisissez les données dans le champ de texte de l'adresse e-mail en utilisant l'identifiant.
  • Cliquez sur le bouton S'inscrire en utilisant l'ID

Étape 3) Lecture des données du fichier de propriétés

  1. La lecture des données à partir d'un fichier de propriétés peut être effectuée à l'aide de la classe Properties intégrée fournie dans le package java.util.
  2. Initialement, un objet de la classe Properties doit être créé comme ci-dessous
  Properties obj = new Properties();
  1. Nous devons créer un objet de la classe FileInputStream avec le chemin d'accès au fichier de propriétés.
FileInputStream objfile = new FileInputStream(System.getProperty("user.dir")+"\\application.properties");
  1. La lecture des données d'un fichier de propriétés peut être effectuée à l'aide de la méthode `load` de la classe `Properties` en Java. L'exemple de code ci-dessous illustre l'utilisation de cette méthode.
Properties obj = new Properties();
FileInputStream objfile = new FileInputStream(System.getProperty("user.dir")+"\\application.properties");
obj.load(objfile);
String mobileTesting = obj.getProperty("MobileTesting");

La chaîne « mobileTesting » contiendra le XPATH pour identifier le lien Mobile Testing dans la page Web.

Étape 4) Utilisation du fichier de propriétés dans les scripts de test

Un fichier de propriétés peut être utilisé dans les scripts de test en lisant les données qu'il contient et en les passant comme paramètre à la méthode `findElement`. Le code ci-dessous illustre l'utilisation de données lues depuis un fichier de propriétés dans les scripts de test.

driver.findElement(By.xpath(obj.getProperty("MobileTesting"))).click();
driver.findElement(By.id(obj.getProperty("EmailTextBox"))).sendKeys("testguru99@gmail.com");
driver.findElement(By.id(obj.getProperty("SignUpButton"))).click();

Vous trouverez ci-dessous le code complet utilisé pour le scénario de test ci-dessus.

package com.objectrepository.demo;

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.util.Properties;

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

public class DemoOR {

    public static void main(String[] args) throws IOException {

        // Create WebDriver Instance
        WebDriver driver;
        System.setProperty("webdriver.chrome.driver", "G:\\chromedriver.exe");
        driver = new ChromeDriver();
        driver.get("https://demo.guru99.com/test/guru99home/");
        driver.manage().window().maximize();
        // Load the properties File
        Properties obj = new Properties();
        FileInputStream objfile = new FileInputStream(System.getProperty("user.dir")+"\\application.properties");
        obj.load(objfile);
        // Navigate to link Mobile Testing and Back
        driver.findElement(By.xpath(obj.getProperty("MobileTesting"))).click();
        driver.navigate().back();
        // Enter Data into Form
        driver.findElement(By.id(obj.getProperty("EmailTextBox"))).sendKeys("testguru99@gmail.com");
        driver.findElement(By.id(obj.getProperty("SignUpButton"))).click();
    }

}

Selenium Référentiel d'objets WebDriver utilisant un fichier XML

XML signifie Extensible Markup Language (langage de balisage extensible). Un fichier XML utilise le modèle objet de document (DOM) comme structure de base. Le format XML reproduit le format HTML sur lequel repose la page web. Voici la liste des sujets qui seront abordés.

Étape 1) Création d'un fichier XML dans Eclipse

  1. La structure du projet Java ci-dessous doit être créée dans Eclipse.

Création d'un fichier XML dans Eclipse

  1. Faites un clic droit sur le dossier du projet, sélectionnez Nouveau -> Autre

Création d'un fichier XML dans Eclipse

  1. Sélectionnez le fichier XML dans le dossier XML et cliquez sur le bouton « Suivant ».

Création d'un fichier XML dans Eclipse

  1. Saisissez un nom de fichier XML valide et cliquez sur le bouton « Terminer ».

Création d'un fichier XML dans Eclipse

  1. Un fichier XML sera ajouté au dossier du projet comme indiqué ci-dessous

Création d'un fichier XML dans Eclipse

Étape 2) Stockage des données sur un fichier XML

Les données peuvent être stockées dans un fichier XML au format DOM (Document Object Model). Par souci de simplicité, nous pouvons utiliser le scénario de test ci-dessous comme exemple.

  • Cliquez sur le lien « Tests mobiles » en utilisant XPATH.
  • Retour à la page d'accueil
  • Saisissez les données dans le champ de texte de l'adresse e-mail en utilisant l'identifiant.
  • Cliquez sur le bouton S'inscrire en utilisant l'ID

Voici le format du fichier XML à utiliser.

<menu>
      <mobiletesting>//a[text()='MOBILE TESTING']</mobiletesting>
      <email> philadelphia-field-email</email>
      <signup> philadelphia-field-submit </signup>
 </menu>

Stockez le code XML ci-dessus dans Properties.xml

Stockage des données dans un fichier XML

Dans l'onglet Conception, vous verrez

Stockage des données dans un fichier XML

Étape 3) Lecture des données du fichier XML

1. La lecture des données d'un fichier XML peut être effectuée à l'aide de la classe intégrée « dom4j » en Java. Veuillez noter que vous devez ajouter les fichiers JAR ci-dessous au chemin de compilation de votre projet avant de poursuivre l'exécution du code.

  • jaxen.jar
  • dom4j-1.6.jar

2. Ci-dessous figure le code permettant de lire les données du fichier XML.

        File inputFile = new File(System.getProperty("user.dir") +"\\properties.xml");
        SAXReader saxReader = new SAXReader();
        Document document = saxReader.read(inputFile);
        String mobileTesting = document.selectSingleNode("//menu/mobiletesting").getText();
        String emailTextBox = document.selectSingleNode("//menu/email").getText();
        String signUpButton = document.selectSingleNode("//menu/signup").getText();

3. Dans un premier temps, il faut créer un objet File et le passer en paramètre à la méthode « read » de la classe SAXReader. Une fois les données du fichier XML lues avec succès, on peut accéder aux nœuds individuels du document XML à l’aide de la méthode « selectSingleNode ».

Étape 4) Utilisation du fichier XML dans les scripts de test

Il est possible d'utiliser un fichier XML dans les scripts de test en lisant des données depuis ce fichier et en les passant comme paramètre à la méthode `findElement`. Le code ci-dessous illustre l'utilisation de données lues depuis un fichier XML dans les scripts de test.

driver.findElement(By.xpath(mobileTesting)).click();
driver.findElement(By.id(emailTextBox)).sendKeys("testguru99@gmail.com");
driver.findElement(By.id(signUpButton)).click();

Le code ci-dessous illustre l'utilisation d'un fichier XML dans Selenium WebDriver.

package com.objectrepository.demo;
import java.io.*;
import java.util.*;
import org.dom4j.*;
import org.dom4j.io.SAXReader;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;

public class DemoORXML {

    public static void main(String[] args) throws DocumentException {
        // Creating WebDriver Instance
        WebDriver driver;
        System.setProperty("webdriver.chrome.driver", "G:\\chromedriver.exe");
        driver = new ChromeDriver();
        driver.get("https://demo.guru99.com/test/guru99home/");
        driver.manage().window().maximize();
        // Reading XML File
        File inputFile = new File(System.getProperty("user.dir") +"\\properties.xml");
        SAXReader saxReader = new SAXReader();
        Document document = saxReader.read(inputFile);
        String mobileTesting = document.selectSingleNode("//menu/mobiletesting").getText();
        String emailTextBox = document.selectSingleNode("//menu/email").getText();
        String signUpButton = document.selectSingleNode("//menu/signup").getText();

        // Navigating to Mobile Testing and back
        driver.findElement(By.xpath(mobileTesting)).click();
        driver.navigate().back();
        // Entering Form Data
        driver.findElement(By.id(emailTextBox)).sendKeys("testguru99@gmail.com");
        driver.findElement(By.id(signUpButton)).click();

    }
}

Téléchargez le WebDriver Eclipse Projet

FAQ

Un référentiel d'objets ne stocke que les localisateurs d'éléments en externe. Le modèle Page Object est un modèle plus global qui encapsule les localisateurs et les actions de page dans des classes de page.

Oui. Les localisateurs peuvent également être stockés dans des fichiers Excel ou CSV, lus à l'aide d'une bibliothèque telle qu'Apache POI et transmis à findElement.

Utilisez des clés claires et descriptives, regroupez les localisateurs par page, privilégiez les localisateurs stables comme les identifiants et évitez les doublons. Conservez un dépôt par module afin qu'une modification de localisateur ne mette à jour qu'une seule entrée.

Oui. Plusieurs outils d'intelligence artificielle analysent une page, détectent les éléments et exportent des localisateurs prêts à l'emploi dans un référentiel. Les testeurs doivent néanmoins vérifier la stabilité de ces localisateurs.

L'auto-réparation par IA analyse les attributs des éléments pendant les exécutions et, lorsqu'un localisateur enregistré est défaillant, sélectionne automatiquement une correspondance alternative. Cela permet de maintenir les tests en cours malgré des modifications mineures de l'interface et de réduire la maintenance.

Résumez cet article avec :