Objectrepository in Selenium (XML- en eigenschappenbestand)

Wat is een objectrepository?

Een objectrepository is een gemeenschappelijke opslaglocatie voor alle objecten. In de Selenium WebDriver-context zijn objecten doorgaans de locators die worden gebruikt om webelementen uniek te identificeren.

Het grote voordeel van het gebruik van een objectrepository is de scheiding van objecten uit testgevallen. Als de locatorwaarde van één webelement verandert, hoeft alleen de objectrepository te worden gewijzigd in plaats van wijzigingen aan te brengen in alle testgevallen waarin de locator is gebruikt. Het onderhouden van een objectrepository vergroot de modulariteit van de raamwerkimplementatie.

Soorten objectopslagplaatsen in Selenium Web Driver

Selenium WebDriver biedt standaard geen ingebouwde objectrepository. Objectopslagplaatsen kunnen echter worden gebouwd met behulp van de sleutel-waardepaarbenadering, waarbij de sleutel verwijst naar de naam die aan het object is gegeven en waarde verwijst naar de eigenschappen die worden gebruikt om een ​​object op de webpagina uniek te identificeren.

De following zijn de typen objectopslagplaatsen die in Selenium WebDriver kunnen worden gemaakt.

  1. Objectrepository met behulp van het eigenschappenbestand
  2. Objectrepository met behulp van XML-bestand

Selenium Web Driver Objectrepository met behulp van het eigenschappenbestand

In deze benadering is het eigenschappenbestand een tekstbestand waarin gegevens worden opgeslagen in de vorm van sleutel-waardeparen. In de onderstaande tutorial wordt het volgende behandeldwing onderwerpen.

Stap 1) Een eigenschappenbestand aanmaken in eclipse

  1. Om te beginnen moet de onderstaande Java-projectstructuur worden aangemaakt eclipse. De projectnaam en pakketnaam kunnen elke geldige naam zijn.

Een eigenschappenbestand maken in Eclipse

  1. Klik met de rechtermuisknop op de hoofdprojectmap en selecteer Nieuw-> Overige

Een eigenschappenbestand maken in Eclipse

  1. In het volgende venster selecteert u Algemeen -> Bestand en klikt u op de knop 'Volgende'

Een eigenschappenbestand maken in Eclipse

  1. Geef een geldige bestandsnaam op met de extensie '.properties' in het nieuwe bestandsbronvenster en klik op de knop 'Voltooien'

Een eigenschappenbestand maken in Eclipse

  1. Er moet een bestand met de naam 'application.properties' worden weergegeven in Project Structure

Een eigenschappenbestand maken in Eclipse

Stap 2) Gegevens opslaan in het eigenschappenbestand

  1. Gegevens worden opgeslagen in het eigenschappenbestand in de vorm van sleutel-waardeparen, waarbij de sleutel uniek is in het hele bestand.
  2. We zullen proberen het eigenschappenbestand te gebruiken om webelementen te identificeren met behulp van locatorwaarden.
  3. Open het bestand application.properties Eclipse en bewaar de volgende gegevenswing gegevens
MobileTesting=//a[text()='MOBILE TESTING']
EmailTextBox = philadelphia-field-email
SignUpButton = philadelphia-field-submit

Gegevens opslaan in een eigenschappenbestand

4) Voor deze zelfstudie geldt het volgendewing demowebsite wordt gebruikt:

http://demo.guru99.com/test/guru99home/. Hier is het testscenario:

  • Klik op de link Mobiel testen met XPATH
  • Navigeer terug
  • Voer gegevens in op email tekstbox met behulp van identiteitsbewijs
  • Klik op de knop Aanmelden met ID

Stap 3) Gegevens uit het eigenschappenbestand lezen

  1. Het lezen van gegevens uit het eigenschappenbestand kan worden gedaan met behulp van de ingebouwde klasse Properties die wordt geleverd in het pakket java.util.
  2. In eerste instantie moet een object van de klasse Properties worden gemaakt, zoals hieronder
  Properties obj = new Properties();
  1. We moeten een object van de FileInputStream-klasse maken met het pad naar het eigenschappenbestand
FileInputStream objfile = new FileInputStream(System.getProperty("user.dir")+"\\application.properties");
  1. Het lezen van gegevens uit het eigenschappenbestand kan worden gedaan met behulp van de laadmethode die wordt aangeboden door de klasse Properties in Java. De onderstaande code demonstreert het gebruik van de laadmethode.
Properties obj = new Properties();
FileInputStream objfile = new FileInputStream(System.getProperty("user.dir")+"\\application.properties");
obj.load(objfile);
String mobileTesting = obj.getProperty("MobileTesting");

De string 'mobileTesting' bevat de XPATH om de Mobile Testing-link binnen de webpagina te identificeren.

Stap 4) Eigenschappenbestand gebruiken in testscripts

Het eigenschappenbestand kan in testscripts worden gebruikt door gegevens uit een eigenschappenbestand te lezen en de gegevens als parameter door te geven aan de findElement-methode. De onderstaande code demonstreert het gebruik van gegevens die zijn gelezen uit het eigenschappenbestand in 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();

Hieronder vindt u de volledige code die voor het bovenstaande testscenario wordt gebruikt.

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 met behulp van XML-bestand

XML staat voor Extensible Markup Language. Een XML-bestand gebruikt Document Object Model (DOM) als basisstructuur. Het XML-bestandsformaat repliceert het HTML-formaat waarop de webpagina is gebouwd. Hieronder vindt u de lijst met onderwerpen die aan bod zullen komen.

Stap 1) Een XML-bestand maken in eclipse

  1. De onderstaande Java-projectstructuur moet worden aangemaakt Eclipse.

Een XML-bestand maken in Eclipse

  1. Klik met de rechtermuisknop op de projectmap en selecteer Nieuw -> Overige

Een XML-bestand maken in Eclipse

  1. Selecteer het XML-bestand in de XML-map en klik op de knop 'Volgende'

Een XML-bestand maken in Eclipse

  1. Voer een geldige XML-bestandsnaam in en klik op de knop 'Voltooien'

Een XML-bestand maken in Eclipse

  1. Er wordt een XML-bestand toegevoegd aan de projectmap, zoals hieronder weergegeven

Een XML-bestand maken in Eclipse

Stap 2) Gegevens opslaan in een XML-bestand

Gegevens kunnen worden opgeslagen in een XML-bestand in de vorm van een Document Object Model (DOM). Voor de eenvoud kunnen we het onderstaande testscenario als voorbeeld gebruiken.

  • Klik op de link Mobiel testen met XPATH
  • Navigeer terug naar de startpagina
  • Voer gegevens in op email tekstbox met behulp van identiteitsbewijs
  • Klik op de knop Aanmelden met ID

Hieronder ziet u het formaat van het XML-bestand dat moet worden gebruikt.

<menu>     
      <mobiletesting>//a[text()='MOBILE TESTING']</mobiletesting>  
      <email> philadelphia-field-email</email> 
      <signup> philadelphia-field-submit </signup>     
 </menu>

Sla de bovenstaande XML-code op in eigenschappen.xml

Gegevens opslaan in een XML-bestand

Op het tabblad Ontwerp ziet u het

Gegevens opslaan in een XML-bestand

Stap 3) Gegevens uit een XML-bestand lezen

1. Het lezen van gegevens uit een XML-bestand kan worden bereikt met behulp van de ingebouwde 'dom4j'-klasse in Java. Houd er rekening mee dat u de onderstaande JAR-bestanden aan het buildpad van uw project moet toevoegen voordat u doorgaat met de code.

  • jaxen.jar
  • dom4j-1.6.jar

2. Hieronder vindt u de code om gegevens uit het XML-bestand te lezen.

		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. In eerste instantie moeten we een File-object maken en dit als parameter doorgeven aan de 'read'-methode van de SAXReader-klasse. Zodra de XML-bestandsgegevens met succes zijn gelezen, hebben we toegang tot individuele knooppunten van het XML-document met behulp van de 'selectSingleNode'-methode.

Stap 4) XML-bestand gebruiken in testscripts

Een XML-bestand kan in testscripts worden gebruikt door gegevens uit een XML-bestand te lezen en de gegevens als parameter door te geven aan de findElement-methode. De onderstaande code demonstreert het gebruik van gegevens die uit een XML-bestand zijn gelezen in testscripts.

driver.findElement(By.xpath(mobileTesting)).click();
driver.findElement(By.id(emailTextBox)).sendKeys("testguru99@gmail.com");
driver.findElement(By.id(signUpButton)).click();

De onderstaande code demonstreert het gebruik van een XML-bestand in 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 de webdriver Eclipse Project

Samengevat

  • Een objectrepository is een gemeenschappelijke opslaglocatie voor alle objecten
  • Selenium WebDriver biedt standaard geen ingebouwde objectrepository
  • U kunt 2 soorten objectrepository's maken in Selenium
    1. Objectrepository met behulp van het eigenschappenbestand
    2. Objectrepository met behulp van XML-bestand
  • Het eigenschappenbestand is een tekstbestand waarin gegevens worden opgeslagen in de vorm van sleutel-waardeparen
  • Het XML-bestandsformaat repliceert het HTML-formaat waarop de webpagina is gebouwd.