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.

  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 egenskabsfilen en tekstfil, hvori data gemmes i form af nøgleværdi-par. Nedenstående tutorial vil behandle følgende emner.

Trin 1) Oprettelse af en egenskabsfil i eclipse

  1. Til at starte med skal nedenstående java-projektstruktur oprettes i eclipse. Projektnavn og pakkenavn kan være alle gyldige navne.

Oprettelse af en egenskabsfil i Eclipse

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

Oprettelse af en egenskabsfil i Eclipse

  1. I det næste vindue skal du vælge Generelt -> Fil 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 på Project Structure

Oprettelse af en egenskabsfil i Eclipse

Trin 2) Lagring af data på egenskabsfil

  1. Data gemmes i egenskabsfilen i form af nøglevæ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 lokaliseringsværdier.
  3. Åbn filen application.properties 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:

http://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

  1. Læsning af data fra egenskabsfilen kan udføres ved hjælp af den indbyggede Properties-klasse, der er leveret i pakken java.util.
  2. I første omgang skal et objekt af klassen Properties oprettes som nedenfor
  Properties obj = new Properties();
  1. Vi skal oprette et objekt af klassen FileInputStream med stien til egenskabsfilen
FileInputStream objfile = new FileInputStream(System.getProperty("user.dir")+"\\application.properties");
  1. 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("http://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.

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 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

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. 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("http://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
    1. Objektlager ved hjælp af egenskabsfil
    2. 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.