Objekt-Repository in Selenium

⚡ Intelligente Zusammenfassung

Objekt-Repository in Selenium Die Element-Locators werden in einer einzigen externen Datei zentralisiert und somit von den Testskripten getrennt. Dieser Ansatz vereinfacht die Wartung und ermöglicht es Testern, Locators an einer zentralen Stelle zu aktualisieren, anstatt zahlreiche Testfälle bearbeiten zu müssen.

  • 🗂️ Kernkonzept: Speichert Benutzeroberflächen-Locators als Schlüssel-Wert-Paare, getrennt von Selenium WebDriver-Testlogik.
  • 📄 Vorgehensweise mit der Eigenschaftendatei: Speichert Locators in einer .properties-Textdatei, die zur Laufzeit über die Klasse java.util.Properties gelesen wird.
  • 🧩 XML-Datei-Ansatz: Verwenden Sie eine XML-Datei mit dem Document Object Model und dom4j, um Locators über selectSingleNode zu lesen.
  • 🔧 Implementierungsablauf: Die Datei wird erstellt, Schlüssel-Wert-Daten werden gespeichert, die Werte werden in Variablen eingelesen und anschließend an findElement übergeben.
  • 🛡️ Wartungsvorteil: Wenn sich ein Locator ändert, aktualisieren Sie nur die Repository-Datei, nicht jeden betroffenen Testfall.

Objekt-Repository in Selenium

Was ist ein Objekt-Repository?

Ein Objekt-Repository ist ein gemeinsamer Speicherort für alle Objekte. In Selenium Im WebDriver-Kontext sind Objekte typischerweise die Locators, die zur eindeutigen Identifizierung von Webelementen verwendet werden.

Der größte Vorteil eines Objekt-Repositorys liegt in der Trennung von Objekten und Testfällen. Ändert sich der Locator-Wert eines Web-Elements, muss lediglich das Objekt-Repository angepasst werden, anstatt alle Testfälle, in denen der Locator verwendet wurde, zu ändern. Die Pflege eines Objekt-Repositorys erhöht die Modularität der Framework-Implementierung.

Arten von Objekt-Repositorys in Selenium Web-Treiber

Selenium WebDriver bietet standardmäßig kein integriertes Objekt-Repository. Objekt-Repositories lassen sich jedoch mithilfe von Schlüssel-Wert-Paaren erstellen, wobei der Schlüssel den Namen des Objekts und der Wert die Eigenschaften angibt, die zur eindeutigen Identifizierung des Objekts innerhalb der Webseite verwendet werden.

Die folgenden Objekt-Repository-Typen können in Selenium WebDriver.

  1. Objekt-Repository mithilfe der Eigenschaftendatei
  2. Objekt-Repository mit XML-Datei

Selenium Web Driver Object-Repository mithilfe der Eigenschaftendatei

Bei diesem Ansatz ist eine Eigenschaftendatei eine Textdatei, in der Daten in Form von Schlüssel-Wert-Paaren gespeichert werden. Das folgende Tutorial behandelt die folgenden Themen.

Schritt 1) ​​Erstellen einer Eigenschaftendatei in Eclipse

  1. Zunächst muss die unten stehende Java-Projektstruktur in Eclipse erstellt werden. Projektname und Paketname können beliebige gültige Namen sein.

Erstellen einer Eigenschaftendatei in Eclipse

  1. Klicken Sie mit der rechten Maustaste auf den Hauptprojektordner und wählen Sie Neu -> Andere.

Erstellen einer Eigenschaftendatei in Eclipse

  1. Im nächsten Fenster wählen Sie Allgemein -> Datei und klicken auf die Schaltfläche „Weiter“.

Erstellen einer Eigenschaftendatei in Eclipse

  1. Geben Sie im Fenster „Neue Dateiressource“ einen gültigen Dateinamen mit der Erweiterung „.properties“ ein und klicken Sie auf die Schaltfläche „Fertigstellen“.

Erstellen einer Eigenschaftendatei in Eclipse

  1. In der Projektstruktur muss eine Datei mit dem Namen „application.properties“ angezeigt werden.

Erstellen einer Eigenschaftendatei in Eclipse

Schritt 2) Speichern von Daten in der Eigenschaftendatei

  1. Die Daten werden in einer Eigenschaftendatei in Form von Schlüssel-Wert-Paaren gespeichert, wobei der Schlüssel innerhalb der Datei eindeutig ist.
  2. Wir werden versuchen, mithilfe der Eigenschaftendatei Webelemente anhand von Locatorwerten zu identifizieren.
  3. Öffnen Sie die Datei application.properties in Eclipse und speichern folgende Daten
MobileTesting=//a[text()='MOBILE TESTING']
EmailTextBox = philadelphia-field-email
SignUpButton = philadelphia-field-submit

Speichern von Daten in einer Eigenschaftendatei

4) Für dieses Tutorial wird die folgende Demo-Website verwendet:

https://demo.guru99.com/test/guru99home/Hier ist das Testszenario:

  • Klicken Sie mithilfe von XPath auf den Link „Mobile Testing“.
  • Zurück navigieren
  • Geben Sie die Daten mithilfe der ID in das E-Mail-Textfeld ein.
  • Klicken Sie auf die Schaltfläche „Anmelden“ mit ID

Schritt 3) Lesen von Daten aus der Eigenschaftendatei

  1. Das Lesen von Daten aus einer Properties-Datei kann mithilfe der integrierten Properties-Klasse aus dem java.util-Paket erfolgen.
  2. Zunächst muss ein Objekt der Klasse Properties wie folgt erstellt werden:
  Properties obj = new Properties();
  1. Wir müssen ein Objekt der Klasse FileInputStream mit dem Pfad zur Eigenschaftendatei erstellen.
FileInputStream objfile = new FileInputStream(System.getProperty("user.dir")+"\\application.properties");
  1. Daten aus einer Properties-Datei können mithilfe der `load`-Methode der `Properties`-Klasse in Java gelesen werden. Der folgende Code veranschaulicht die Verwendung der `load`-Methode.
Properties obj = new Properties();
FileInputStream objfile = new FileInputStream(System.getProperty("user.dir")+"\\application.properties");
obj.load(objfile);
String mobileTesting = obj.getProperty("MobileTesting");

Die Zeichenfolge „mobileTesting“ enthält den XPATH zur Identifizierung des Mobile Testing-Links auf der Webseite.

Schritt 4) Verwendung der Eigenschaftendatei in Testskripten

Eine Eigenschaftendatei kann in Testskripten verwendet werden, indem Daten aus der Eigenschaftendatei gelesen und als Parameter an die Methode `findElement` übergeben werden. Der folgende Code veranschaulicht die Verwendung von Daten aus einer Eigenschaftendatei in Testskripten.

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();

Nachfolgend finden Sie den vollständigen Code, der für das obige Testszenario verwendet wird.

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 WebDriver-Objekt-Repository mit XML-Datei

XML steht für Extensible Markup Language. Eine XML-Datei verwendet das Document Object Model (DOM) als Grundstruktur. Das XML-Dateiformat bildet das HTML-Format nach, auf dem die Webseite basiert. Im Folgenden finden Sie eine Liste der behandelten Themen.

Schritt 1) ​​Erstellen einer XML-Datei in Eclipse

  1. Die folgende Java-Projektstruktur muss erstellt werden Eclipse.

Erstellen einer XML-Datei in Eclipse

  1. Klicken Sie mit der rechten Maustaste auf den Projektordner und wählen Sie Neu -> Andere

Erstellen einer XML-Datei in Eclipse

  1. Wählen Sie die XML-Datei im XML-Ordner aus und klicken Sie auf die Schaltfläche „Weiter“.

Erstellen einer XML-Datei in Eclipse

  1. Geben Sie einen gültigen XML-Dateinamen ein und klicken Sie auf die Schaltfläche „Fertigstellen“.

Erstellen einer XML-Datei in Eclipse

  1. Dem Projektordner wird eine XML-Datei hinzugefügt, wie unten gezeigt

Erstellen einer XML-Datei in Eclipse

Schritt 2) Speichern der Daten in einer XML-Datei

Daten können in einer XML-Datei im Format des Document Object Model (DOM) gespeichert werden. Zur Vereinfachung kann das folgende Testszenario als Beispiel verwendet werden.

  • Klicken Sie mithilfe von XPath auf den Link „Mobile Testing“.
  • Zurück zur Startseite
  • Geben Sie die Daten mithilfe der ID in das E-Mail-Textfeld ein.
  • Klicken Sie auf die Schaltfläche „Anmelden“ mit ID

Nachfolgend ist das Format der zu verwendenden XML-Datei aufgeführt.

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

Speichern Sie den obigen XML-Code in Properties.xml

Speichern von Daten in einer XML-Datei

Auf der Registerkarte „Design“ sehen Sie

Speichern von Daten in einer XML-Datei

Schritt 3) Daten aus der XML-Datei lesen

1. Daten aus einer XML-Datei können mithilfe der in Java integrierten Klasse „dom4j“ gelesen werden. Bitte beachten Sie, dass Sie die unten aufgeführten JAR-Dateien zum Build-Pfad Ihres Projekts hinzufügen müssen, bevor Sie mit dem Code fortfahren.

  • jaxen.jar
  • dom4j-1.6.jar

2. Nachfolgend der Code zum Lesen von Daten aus der XML-Datei.

        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. Zunächst muss ein File-Objekt erstellt und als Parameter an die Methode „read“ der Klasse SAXReader übergeben werden. Sobald die XML-Datei erfolgreich gelesen wurde, können die einzelnen Knoten des XML-Dokuments mit der Methode „selectSingleNode“ aufgerufen werden.

Schritt 4) Verwendung einer XML-Datei in Testskripten

Eine XML-Datei kann in Testskripten verwendet werden, indem Daten aus der XML-Datei gelesen und als Parameter an die Methode `findElement` übergeben werden. Der folgende Code veranschaulicht die Verwendung von Daten aus einer XML-Datei in Testskripten.

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

Der folgende Code demonstriert die Verwendung einer XML-Datei in 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();

    }
}

Laden Sie den WebDriver herunter Eclipse Projekt

Häufig gestellte Fragen

Ein Objekt-Repository speichert Element-Locators ausschließlich extern. Das Page Object Model ist ein umfassenderes Muster, das Locators und Seitenaktionen in Seitenklassen kapselt.

Ja. Locators können auch in Excel- oder CSV-Dateien gespeichert, mit einer Bibliothek wie Apache POI eingelesen und an findElement übergeben werden.

Verwenden Sie aussagekräftige Schlüssel, gruppieren Sie Locators nach Seite, bevorzugen Sie stabile Locators wie die ID und vermeiden Sie Duplikate. Verwenden Sie ein separates Repository pro Modul, sodass eine Locatoränderung nur einen einzigen Eintrag aktualisiert.

Ja. Mehrere KI-gestützte Tools scannen eine Seite, erkennen Elemente und exportieren vorgefertigte Locators in ein Repository. Tester sollten die Locators dennoch auf Stabilität überprüfen.

Die KI-Selbstheilungsfunktion überwacht während der Testläufe die Elementattribute und wählt bei einem Fehler in einem gespeicherten Locator automatisch eine alternative Übereinstimmung aus. Dadurch bleiben die Tests trotz kleinerer Änderungen an der Benutzeroberfläche lauffähig und der Wartungsaufwand wird reduziert.

Fassen Sie diesen Beitrag mit folgenden Worten zusammen: