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: