Objektlager i Selenium

⚡ Smart opsummering

Objektlager i Selenium centraliserer elementlokaliseringsværktøjer i en enkelt ekstern fil og adskiller dem fra testscripts. Denne tilgang forbedrer vedligeholdelsen og giver testere mulighed for at opdatere lokaliseringsværktøjer ét sted i stedet for at skulle redigere mange testcases.

  • 🗂️ Kernekoncept: Gemmer brugergrænsefladelokaliseringspunkter som nøgle-værdi-par, adskilt fra Selenium WebDriver testlogik.
  • 📄 Egenskabsfilmetode: Gem locators i en .properties tekstfil, læs under kørsel via java.util.Properties-klassen.
  • 🧩 XML-filmetode: Brug en XML-fil med Document Object Model og dom4j til at læse locators via selectSingleNode.
  • 🔧 Implementeringsflow: Opret filen, gem nøgle-værdi-data, læs værdier ind i variabler, og send dem derefter til findElement.
  • 🛡️ Vedligeholdelsesfordel: Når en locator ændres, skal du kun opdatere repository-filen, ikke alle berørte testcases.

Objektlager i Selenium

Hvad er et objektlager?

Et objektlager er en fælles lagerplads for alle objekter. I Selenium WebDriver-kontekst, vil objekter typisk være lokalisatorerne, der bruges til entydigt at identificere webelementer.

Den største fordel ved at bruge et objektlager er adskillelsen af ​​objekter fra testcases. Hvis locator-værdien for ét webelement ændres, er det kun objektlageret, der skal ændres, i stedet for at der skal foretages ændringer i alle testcases, hvor locatoren er blevet brugt. Vedligeholdelse af et objektlager øger modulariteten af ​​​​framework-implementeringen.

Typer af objektlager i Selenium Web driver

Selenium WebDriver tilbyder ikke et indbygget objektlager som standard. Objektlagre kan dog bygges ved hjælp af nøgle-værdi-par-tilgangen, hvor nøglen refererer til det navn, der er givet til objektet, og værdien refererer til de egenskaber, der bruges til entydigt at identificere et objekt på websiden.

Følgende er de typer objektlager, der kan oprettes i Selenium WebDriver.

  1. Objektlager ved hjælp af egenskabsfil
  2. Objektlager ved hjælp af XML-fil

Selenium Web Driver Object repository ved hjælp af Properties fil

I denne tilgang er en egenskabsfil en tekstfil, hvor data gemmes i form af nøgle-værdi-par. Nedenstående vejledning vil behandle følgende emner.

Trin 1) Oprettelse af en egenskabsfil i eclipse

  1. Til at begynde med skal nedenstående Java-projektstruktur oprettes i Eclipse. Projektnavnet og pakkenavnet kan være et hvilket som helst gyldigt navn.

Oprettelse af en egenskabsfil i Eclipse

  1. Højreklik på projektets hovedmappe og vælg Ny-> Andet

Oprettelse af en egenskabsfil i Eclipse

  1. I det næste vindue skal du vælge Generelt -> Filer og klikke på knappen 'Næste'.

Oprettelse af en egenskabsfil i Eclipse

  1. Angiv et gyldigt filnavn med filtypenavnet '.properties' i det nye filressourcevindue, og klik på knappen 'Udfør'.

Oprettelse af en egenskabsfil i Eclipse

  1. En fil med navnet 'application.properties' skal vises i projektstrukturen.

Oprettelse af en egenskabsfil i Eclipse

Trin 2) Lagring af data på egenskabsfil

  1. Data gemmes i en egenskabsfil i form af nøgle-værdi-par, hvor nøglen er unik på tværs af filen.
  2. Vi vil forsøge at bruge egenskabsfilen til at identificere webelementer ved hjælp af locator-værdier.
  3. Åbn application.properties-filen i Eclipse og gemme følgende data
MobileTesting=//a[text()='MOBILE TESTING']
EmailTextBox = philadelphia-field-email
SignUpButton = philadelphia-field-submit

Lagring af data på egenskabsfil

4) Til denne tutorial bruges følgende demo-websted:

https://demo.guru99.com/test/guru99home/Her er testscenariet:

  • Klik på linket Mobiltestning ved hjælp af XPATH
  • Naviger tilbage
  • Indtast data i e-mail-tekstfeltet ved hjælp af ID
  • Klik på knappen Tilmeld dig med ID

Trin 3) Læsning af data fra egenskabsfil

  1. Datalæsning fra en properties-fil kan gøres ved hjælp af den indbyggede Properties-klasse, der findes i java.util-pakken.
  2. I starten skal et objekt af Properties-klassen oprettes som vist nedenfor.
  Properties obj = new Properties();
  1. Vi skal oprette et objekt af FileInputStream-klassen med stien til egenskabsfilen.
FileInputStream objfile = new FileInputStream(System.getProperty("user.dir")+"\\application.properties");
  1. Datalæsning fra en properties-fil kan udføres ved hjælp af load-metoden, der tilbydes af Properties-klassen i Java. Koden nedenfor demonstrerer brugen af ​​load-metoden.
Properties obj = new Properties();
FileInputStream objfile = new FileInputStream(System.getProperty("user.dir")+"\\application.properties");
obj.load(objfile);
String mobileTesting = obj.getProperty("MobileTesting");

Strengen 'mobileTesting' vil indeholde XPATH for at identificere Mobile Testing-linket på websiden.

Trin 4) Brug af egenskabsfil i testscripts

En egenskabsfil kan bruges i testscripts ved at læse data fra egenskabsfilen og sende dataene som en parameter til findElement-metoden. Koden nedenfor demonstrerer brugen af ​​data læst fra en egenskabsfil i testscripts.

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

Nedenstående er den komplette kode, der bruges til ovenstående testscenarie.

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 Object Repository ved hjælp af XML-fil

XML står for Extensible Markup Language. En XML-fil bruger Document Object Model (DOM) som den grundlæggende struktur. XML-filformatet vil replikere HTML-formatet, som websiden er bygget op efter. Nedenfor er en liste over emner, der vil blive dækket.

Trin 1) Oprettelse af en XML-fil i eclipse

  1. Nedenstående java-projektstruktur skal oprettes i Eclipse.

Oprettelse af en XML-fil i Eclipse

  1. Højreklik på projektmappen, vælg Ny -> Andet

Oprettelse af en XML-fil i Eclipse

  1. Vælg XML-filen i XML-mappen, og klik på knappen 'Næste'.

Oprettelse af en XML-fil i Eclipse

  1. Indtast et gyldigt XML-filnavn, og klik på knappen 'Udfør'.

Oprettelse af en XML-fil i Eclipse

  1. En XML-fil vil blive tilføjet til projektmappen som vist nedenfor

Oprettelse af en XML-fil i Eclipse

Trin 2) Lagring af data på XML-fil

Data kan gemmes i en XML-fil i form af en Document Object Model (DOM). For nemheds skyld kan vi bruge nedenstående testscenarie som et eksempel.

  • Klik på linket Mobiltestning ved hjælp af XPATH
  • Naviger tilbage til startsiden
  • Indtast data i e-mail-tekstfeltet ved hjælp af ID
  • Klik på knappen Tilmeld dig med ID

Nedenfor er formatet for den XML-fil, der skal bruges.

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

Gem ovenstående XML-kode i properties.xml

Lagring af data på XML-fil

I designfanen kan du se

Lagring af data på XML-fil

Trin 3) Læsning af data fra XML-fil

1. Datalæsning fra en XML-fil kan udføres ved hjælp af den indbyggede 'dom4j'-klasse i Java. Bemærk venligst, at du skal tilføje nedenstående JAR-filer til byggestien for dit projekt, før du fortsætter med koden.

  • jaxen.jar
  • dom4j-1.6.jar

2. Nedenfor er koden til at læse data fra XML-filen.

        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. Først skal vi oprette et File-objekt og sende det som en parameter til 'read'-metoden i SAXReader-klassen. Når XML-fildataene er læst korrekt, kan vi få adgang til individuelle noder i XML-dokumentet ved hjælp af 'selectSingleNode'-metoden.

Trin 4) Brug af XML-fil i testscripts

En XML-fil kan bruges i testscripts ved at læse data fra XML-filen og sende dataene som en parameter til findElement-metoden. Koden nedenfor demonstrerer brugen af ​​data læst fra en XML-fil i testscripts.

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

Koden nedenfor demonstrerer brugen af ​​en XML-fil i 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();

    }
}

Download WebDriver Eclipse Projekt

Ofte Stillede Spørgsmål

Et objektlager gemmer kun elementlokatorer eksternt. Sideobjektmodellen er et bredere mønster, der omslutter lokatorer og sidehandlinger inden for sideklasser.

Ja. Lokaliseringsværktøjer kan også gemmes i Excel- eller CSV-filer, læses ved hjælp af et bibliotek som f.eks. Apache POI og sendes til findElement.

Brug tydelige, beskrivende nøgler, grupper locatorer efter side, foretræk stabile locatorer såsom ID, og ​​undgå dubletter. Behold ét repository pr. modul, så en locatorændring opdaterer en enkelt post.

Ja. Adskillige AI-assisterede værktøjer scanner en side, registrerer elementer og eksporterer færdige locatorer til et repository. Testere bør stadig gennemgå locatorerne for stabilitet.

AI-selvreparation observerer elementattributter under kørsler, og når en gemt locator ikke fungerer, vælger den automatisk et alternativt match. Dette holder testene kørende på trods af mindre ændringer i grænsefladen og reducerer vedligeholdelsen.

Opsummer dette indlæg med: