Objektlager i Selenium (XML og egenskapsfil)
Hva er et objektlager?
Et objektlager er et felles lagringssted for alle objekter. I Selenium WebDriver-kontekst, vil objekter typisk være lokalisatorene som brukes til å identifisere webelementer unikt.
Den største fordelen med å bruke objektlager er segregeringen av objekter fra testtilfeller. Hvis locator-verdien til ett webelement endres, er det bare objektlageret som må endres i stedet for å gjøre endringer i alle testtilfeller der locatoren har blitt brukt. Vedlikehold av et objektlager øker modulariteten til rammeverkimplementering.
Typer objektlager i Selenium Nettdriver
Selenium WebDriver tilbyr ikke et innebygd objektlager som standard. Imidlertid kan objektlagre bygges ved å bruke nøkkel-verdi-par-tilnærmingen der nøkkelen refererer til navnet gitt til objektet og verdien refererer til egenskapene som brukes til å identifisere et objekt unikt på nettsiden.
Følgende er typene objektlager som kan opprettes i Selenium WebDriver.
- Objektlager ved hjelp av egenskapsfil
- Objektlager ved hjelp av XML-fil
Selenium Web Driver-objektlager ved hjelp av egenskapsfilen
I denne tilnærmingen er egenskapsfilen en tekstfil der data lagres i form av nøkkelverdi-par. Veiledningen nedenfor vil ta for seg følgende emner.
- Opprette en egenskapsfil i eclipse
- Lagre data i egenskapsfilen
- Leser data fra egenskapsfilen
- Bruke egenskapsfilen i testskript
Trinn 1) Opprette en egenskapsfil i eclipse
- Til å begynne med må java-prosjektstrukturen nedenfor opprettes i eclipse. Prosjektnavn og pakkenavn kan være alle gyldige navn.
- Høyreklikk på hovedprosjektmappen og velg Ny-> Annet
- I neste vindu velger du Generelt -> Fil og klikker på 'Neste'-knappen
- Oppgi et gyldig filnavn med filtypen ".properties" i det nye filressursvinduet og klikk på "Fullfør"-knappen
- En fil med navnet 'application.properties' må vises på Project Structure
Trinn 2) Lagre data i egenskapsfilen
- Data lagres i egenskapsfilen i form av nøkkelverdi-par, hvor nøkkelen er unik på tvers av filen.
- Vi vil prøve å bruke egenskapsfilen til å identifisere webelementer ved å bruke locator-verdier.
- Åpne filen application.properties i Eclipse og lagre følgende data
MobileTesting=//a[text()='MOBILE TESTING'] EmailTextBox = philadelphia-field-email SignUpButton = philadelphia-field-submit
4) For denne opplæringen brukes følgende demonettsted:
https://demo.guru99.com/test/guru99home/. Her er testscenarioet:
- Klikk på Mobile Testing-koblingen ved hjelp av XPATH
- Naviger tilbake
- Skriv inn data i e-postboksen ved å bruke ID
- Klikk på Registrer deg-knappen med ID
Trinn 3) Lese data fra egenskapsfilen
- Lesing av data fra egenskapsfilen kan gjøres ved å bruke den innebygde egenskapsklassen i java.util-pakken.
- Til å begynne med må et objekt av klassen Properties opprettes som nedenfor
Properties obj = new Properties();
- Vi må lage et objekt av FileInputStream-klassen med banen til egenskapsfilen
FileInputStream objfile = new FileInputStream(System.getProperty("user.dir")+"\\application.properties");
- Lese data fra egenskapsfilen kan gjøres ved å bruke lastemetoden som tilbys av Properties-klassen i java. Koden nedenfor demonstrerer bruken av lastemetoden.
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 inneholde XPATH for å identifisere koblingen for mobiltesting på nettsiden.
Trinn 4) Bruke egenskapsfilen i testskript
Egenskapsfilen kan brukes i testskript ved å lese data fra en egenskapsfil og overføre dataene som en parameter til findElement-metoden. Koden nedenfor demonstrerer bruken av data lest fra egenskapsfilen i testskript.
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();
Nedenfor er den komplette koden som brukes for testscenarioet ovenfor.
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 hjelp av XML-fil
XML står for Extensible Markup Language. En XML-fil bruker Document Object Model (DOM) som den grunnleggende strukturen. XML-filformatet vil replikere HTML-formatet som nettsiden er bygd på. Nedenfor er listen over emner som vil bli dekket.
- Opprette en XML-fil i Eclipse
- Lagre data på XML-fil
- Leser data fra XML-fil
- Bruke XML-fil i testskript
Trinn 1) Opprette en XML-fil i Eclipse
- Java-prosjektstrukturen nedenfor må opprettes i Eclipse.
- Høyreklikk på prosjektmappen, velg Ny -> Annet
- Velg XML-filen i XML-mappen og klikk på 'Neste'-knappen
- Skriv inn et gyldig XML-filnavn og klikk på "Fullfør"-knappen
- En XML-fil vil bli lagt til prosjektmappen som vist nedenfor
Trinn 2) Lagre data på XML-fil
Data kan lagres i XML-fil i form av Document Object Model (DOM). For enkelhets skyld kan vi bruke testscenarioet nedenfor som et eksempel.
- Klikk på Mobile Testing-koblingen ved hjelp av XPATH
- Naviger tilbake til startsiden
- Skriv inn data i e-postboksen ved å bruke ID
- Klikk på Registrer deg-knappen med ID
Nedenfor er formatet på XML-filen som skal brukes.
<menu> <mobiletesting>//a[text()='MOBILE TESTING']</mobiletesting> <email> philadelphia-field-email</email> <signup> philadelphia-field-submit </signup> </menu>
Lagre XML-koden ovenfor i properties.xml
I designfanen vil du se
Trinn 3) Lese data fra XML-fil
1. Lesing av data fra XML-fil kan gjøres ved å bruke den innebygde 'dom4j'-klassen i java. Vær oppmerksom på at du må legge til JAR-filene nedenfor i byggebanen til prosjektet ditt før du fortsetter med koden.
- jaxen.jar
- dom4j-1.6.jar
2. Nedenfor er koden for å lese 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. Til å begynne med må vi lage et File-objekt og sende det som en parameter til 'read'-metoden til SAXReader-klassen. Når XML-fildataene er lest vellykket, kan vi få tilgang til individuelle noder i XML-dokumentet ved å bruke 'selectSingleNode'-metoden.
Trinn 4) Bruk av XML-fil i testskript
XML-fil kan brukes i testskript ved å lese data fra XML-fil og sende dataene som parameter til findElement-metoden. Koden nedenfor demonstrerer bruken av data lest fra XML-fil i testskript.
driver.findElement(By.xpath(mobileTesting)).click(); driver.findElement(By.id(emailTextBox)).sendKeys("testguru99@gmail.com"); driver.findElement(By.id(signUpButton)).click();
Koden nedenfor demonstrerer bruken av 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(); } }
Last ned WebDriver Eclipse Prosjekt
Sammendrag
- Et objektlager er et felles lagringssted for alle objekter
- Selenium WebDriver tilbyr ikke et innebygd objektlager som standard
- Du kan opprette 2 typer objektlager i Selenium
- Objektlager ved hjelp av egenskapsfil
- Objektlager ved hjelp av XML-fil
- Egenskapsfilen er en tekstfil der data lagres i form av nøkkelverdi-par
- XML-filformatet vil replikere HTML-formatet som nettsiden er bygd på.