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:

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

  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("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.

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("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
    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.

Opsummer dette indlรฆg med: