Objektlager i Selenium (XML- og egenskabsfil)
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 objektlager er adskillelsen af โโobjekter fra testcases. Hvis locatorvรฆrdien for et webelement รฆndres, er det kun objektlageret, der skal รฆndres i stedet for at foretage รฆndringer i alle testcases, hvor locatoren er blevet brugt. Vedligeholdelse af et objektlager รธger modulariteten af โโrammeimplementering.
Typer af objektlager i Selenium Web driver
Selenium WebDriver tilbyder som standard ikke et indbygget objektlager. Objektlagre kan dog bygges ved hjรฆlp af nรธgle-vรฆrdi-partilgangen, hvor nรธglen refererer til det navn, der er givet til objektet, og vรฆrdien henviser 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 egenskabsfilen en tekstfil, hvori data gemmes i form af nรธglevรฆrdi-par. Nedenstรฅende tutorial vil behandle fรธlgende emner.
- Oprettelse af en egenskabsfil i eclipse
- Lagring af data pรฅ egenskabsfil
- Lรฆser data fra egenskabsfil
- Brug af egenskabsfil i testscripts
Trin 1) Oprettelse af en egenskabsfil i eclipse
- Til at starte med skal nedenstรฅende java-projektstruktur oprettes i eclipse. Projektnavn og pakkenavn kan vรฆre alle gyldige navne.
- Hรธjreklik pรฅ hovedprojektmappen og vรฆlg Ny-> Andet
- I det nรฆste vindue skal du vรฆlge Generelt -> Fil 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 pรฅ Project Structure
Trin 2) Lagring af data pรฅ egenskabsfil
- Data gemmes i egenskabsfilen i form af nรธglevรฆ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 lokaliseringsvรฆrdier.
- ร bn filen application.properties 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 testscenarie:
- Klik pรฅ linket Mobile Testing ved hjรฆlp af XPATH
- Naviger tilbage
- Indtast data i e-mail-tekstboksen ved hjรฆlp af ID
- Klik pรฅ knappen Tilmeld dig med ID
Trin 3) Lรฆsning af data fra egenskabsfil
- Lรฆsning af data fra egenskabsfilen kan udfรธres ved hjรฆlp af den indbyggede Properties-klasse, der er leveret i pakken java.util.
- I fรธrste omgang skal et objekt af klassen Properties oprettes som nedenfor
Properties obj = new Properties();
- Vi skal oprette et objekt af klassen FileInputStream med stien til egenskabsfilen
FileInputStream objfile = new FileInputStream(System.getProperty("user.dir")+"\\application.properties");
- Lรฆsning af data fra egenskabsfilen kan udfรธres ved hjรฆlp af indlรฆsningsmetoden, der tilbydes af klassen Properties i java. Nedenstรฅende kode viser brugen af โโbelastningsmetoden.
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
Egenskabsfilen kan bruges i testscripts ved at lรฆse data fra en egenskabsfil og overfรธre dataene som en parameter til findElement-metoden. Nedenstรฅende kode demonstrerer brugen af โโdata lรฆst fra egenskabsfilen 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);
// Nagigate 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 det HTML-format, som websiden er opbygget efter. Nedenfor er listen over emner, der vil blive behandlet.
- 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 XML-fil i form af Document Object Model (DOM). For nemheds skyld kan vi bruge nedenstรฅende testscenarie som eksempel.
- Klik pรฅ linket Mobile Testing ved hjรฆlp af XPATH
- Naviger tilbage til startsiden
- Indtast data i e-mail-tekstboksen ved hjรฆlp af ID
- Klik pรฅ knappen Tilmeld dig med ID
Nedenstรฅende er formatet pรฅ XML-filen, 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. Lรฆsning af data fra 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 til 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-fil.
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. Indledningsvis 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
XML-fil kan bruges i testscripts ved at lรฆse data fra XML-fil og overfรธre dataene som parameter til findElement-metoden. Nedenstรฅende kode demonstrerer brugen af โโdata lรฆst fra 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();
Nedenstรฅende kode demonstrerer brugen af โโ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
Resumรฉ
- Et objektlager er en fรฆlles lagerplads for alle objekter
- Selenium WebDriver tilbyder som standard ikke et indbygget objektlager
- Du kan oprette 2 typer objektlager i Selenium
- Objektlager ved hjรฆlp af egenskabsfil
- Objektlager ved hjรฆlp af XML-fil
- Egenskabsfilen er en tekstfil, hvori data gemmes i form af nรธglevรฆrdi-par
- XML-filformatet vil replikere det HTML-format, som websiden er opbygget efter.













