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.

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.
- Objektlager ved hjælp af egenskabsfil
- 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
- Til at begynde med skal nedenstående Java-projektstruktur oprettes i Eclipse. Projektnavnet og pakkenavnet kan være et hvilket som helst gyldigt navn.
- Højreklik på projektets hovedmappe og vælg Ny-> Andet
- I det næste vindue skal du vælge Generelt -> Filer og klikke på knappen 'Næste'.
- Angiv et gyldigt filnavn med filtypenavnet '.properties' i det nye filressourcevindue, og klik på knappen 'Udfør'.
- En fil med navnet 'application.properties' skal vises i projektstrukturen.
Trin 2) Lagring af data på egenskabsfil
- Data gemmes i en egenskabsfil i form af nøgle-værdi-par, hvor nøglen er unik på tværs af filen.
- Vi vil forsøge at bruge egenskabsfilen til at identificere webelementer ved hjælp af locator-værdier.
- Åbn application.properties-filen i Eclipse og gemme følgende data
MobileTesting=//a[text()='MOBILE TESTING'] EmailTextBox = philadelphia-field-email SignUpButton = philadelphia-field-submit
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
- Datalæsning fra en properties-fil kan gøres ved hjælp af den indbyggede Properties-klasse, der findes i java.util-pakken.
- I starten skal et objekt af Properties-klassen oprettes som vist nedenfor.
Properties obj = new Properties();
- Vi skal oprette et objekt af FileInputStream-klassen med stien til egenskabsfilen.
FileInputStream objfile = new FileInputStream(System.getProperty("user.dir")+"\\application.properties");
- 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.
- Oprettelse af en XML-fil i eclipse
- Lagring af data på XML-fil
- Læser data fra XML-fil
- Brug af XML-fil i testscripts
Trin 1) Oprettelse af en XML-fil i eclipse
- Nedenstående java-projektstruktur skal oprettes i Eclipse.
- Højreklik på projektmappen, vælg Ny -> Andet
- Vælg XML-filen i XML-mappen, og klik på knappen 'Næste'.
- Indtast et gyldigt XML-filnavn, og klik på knappen 'Udfør'.
- En XML-fil vil blive tilføjet til projektmappen som vist nedenfor
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
I designfanen kan du se
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













