Repository di oggetti in Selenium (File XML e proprietà)

Cos'è un repository di oggetti?

Un repository di oggetti è una posizione di archiviazione comune per tutti gli oggetti. In Selenium Nel contesto WebDriver, gli oggetti sarebbero in genere i localizzatori utilizzati per identificare in modo univoco gli elementi Web.

Il vantaggio principale dell'utilizzo del repository di oggetti è la separazione degli oggetti dai casi di test. Se il valore locator di un elemento web cambia, è necessario modificare solo il repository degli oggetti anziché apportare modifiche in tutti i casi di test in cui è stato utilizzato il locator. Il mantenimento di un repository di oggetti aumenta la modularità dell'implementazione del framework.

Tipi di repository di oggetti in Selenium Driver Web

Selenium WebDriver non offre un repository di oggetti integrato per impostazione predefinita. Tuttavia, i repository di oggetti possono essere creati utilizzando l'approccio della coppia chiave-valore in cui la chiave si riferisce al nome dato all'oggetto e il valore si riferisce alle proprietà utilizzate per identificare in modo univoco un oggetto all'interno della pagina web.

Di seguito sono riportati i tipi di repository di oggetti che possono essere creati in Selenium WebDriver.

  1. Repository di oggetti utilizzando il file delle proprietà
  2. Repository di oggetti utilizzando file XML

Selenium Repository di oggetti Web Driver utilizzando il file Proprietà

In questo approccio, il file delle proprietà è un file di testo in cui i dati sono archiviati sotto forma di coppie chiave-valore. Il tutorial seguente affronterà i seguenti argomenti.

Passaggio 1) Creazione di un file di proprietà in Eclipse

  1. Per iniziare, la struttura del progetto Java sottostante deve essere creata in Eclipse. Il nome del progetto e il nome del pacchetto possono essere qualsiasi nome valido.

Creazione di un file delle proprietà in Eclipse

  1. Fare clic con il tasto destro sulla cartella principale del progetto e selezionare Nuovo-> Altro

Creazione di un file delle proprietà in Eclipse

  1. Nella finestra successiva, seleziona Generale -> File e fai clic sul pulsante "Avanti".

Creazione di un file delle proprietà in Eclipse

  1. Fornire un nome file valido con l'estensione ".properties" nella nuova finestra delle risorse file e fare clic sul pulsante "Fine"

Creazione di un file delle proprietà in Eclipse

  1. Un file denominato "application.properties" deve essere visualizzato nella struttura del progetto

Creazione di un file delle proprietà in Eclipse

Passaggio 2) Memorizzazione dei dati nel file delle proprietà

  1. I dati vengono archiviati nel file delle proprietà sotto forma di coppie chiave-valore, con la chiave univoca in tutto il file.
  2. Cercheremo di utilizzare il file delle proprietà per identificare gli elementi web utilizzando i valori di localizzazione.
  3. Apri il file application.properties in Eclipse e memorizzare i seguenti dati
MobileTesting=//a[text()='MOBILE TESTING']
EmailTextBox = philadelphia-field-email
SignUpButton = philadelphia-field-submit

Memorizzazione dei dati nel file delle proprietà

4) Per questo tutorial viene utilizzato il seguente sito web dimostrativo:

http://demo.guru99.com/test/guru99home/. Ecco lo scenario di prova:

  • Fare clic sul collegamento Test mobile utilizzando XPATH
  • Torna indietro
  • Inserisci i dati nella casella di testo dell'e-mail utilizzando l'ID
  • Fare clic sul pulsante Iscriviti utilizzando l'ID

Passaggio 3) Lettura dei dati dal file delle proprietà

  1. La lettura dei dati dal file delle proprietà può essere eseguita utilizzando la classe Properties incorporata fornita nel pacchetto java.util.
  2. Inizialmente, è necessario creare un oggetto della classe Properties come di seguito
  Properties obj = new Properties();
  1. Dobbiamo creare un oggetto della classe FileInputStream con il percorso del file delle proprietà
FileInputStream objfile = new FileInputStream(System.getProperty("user.dir")+"\\application.properties");
  1. La lettura dei dati dal file delle proprietà può essere eseguita utilizzando il metodo di caricamento offerto dalla classe Properties in Java. Il codice seguente dimostra l'utilizzo del metodo load.
Properties obj = new Properties();
FileInputStream objfile = new FileInputStream(System.getProperty("user.dir")+"\\application.properties");
obj.load(objfile);
String mobileTesting = obj.getProperty("MobileTesting");

La stringa "mobileTesting" conterrà l'XPATH per identificare il collegamento Mobile Testing all'interno della pagina web.

Passaggio 4) Utilizzo del file delle proprietà negli script di test

Il file delle proprietà può essere utilizzato negli script di test leggendo i dati da un file delle proprietà e passando i dati come parametro al metodo findElement. Il codice seguente dimostra l'utilizzo dei dati letti dal file delle proprietà negli script di test.

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();

Di seguito è riportato il codice completo utilizzato per lo scenario di test sopra riportato.

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 Repository di oggetti WebDriver utilizzando file XML

XML sta per Extensible Markup Language. Un file XML utilizza Document Object Model (DOM) come struttura di base. Il formato file XML replicherà il formato HTML su cui è costruita la pagina web. Di seguito l'elenco degli argomenti che verranno trattati.

Passaggio 1) Creazione di un file XML in Eclipse

  1. È necessario creare la struttura del progetto Java seguente Eclipse.

Creazione di un file XML in Eclipse

  1. Fare clic con il tasto destro sulla cartella del progetto, selezionare Nuovo -> Altro

Creazione di un file XML in Eclipse

  1. Selezionare il file XML all'interno della cartella XML e fare clic sul pulsante "Avanti".

Creazione di un file XML in Eclipse

  1. Immettere un nome file XML valido e fare clic sul pulsante "Fine".

Creazione di un file XML in Eclipse

  1. Un file XML verrà aggiunto alla cartella del progetto come mostrato di seguito

Creazione di un file XML in Eclipse

Passaggio 2) Memorizzazione dei dati su file XML

I dati possono essere archiviati in file XML sotto forma di Document Object Model (DOM). Per semplicità, possiamo utilizzare come esempio lo scenario di test riportato di seguito.

  • Fare clic sul collegamento Test mobile utilizzando XPATH
  • Torna alla pagina iniziale
  • Inserisci i dati nella casella di testo dell'e-mail utilizzando l'ID
  • Fare clic sul pulsante Iscriviti utilizzando l'ID

Di seguito è riportato il formato del file XML da utilizzare.

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

Archiviare il codice XML riportato sopra in Properties.xml

Memorizzazione dei dati su file XML

Nella scheda di progettazione vedrai

Memorizzazione dei dati su file XML

Passaggio 3) Lettura dei dati dal file XML

1. La lettura dei dati dal file XML può essere eseguita utilizzando la classe 'dom4j' incorporata in Java. Tieni presente che devi aggiungere i file JAR seguenti nel percorso di compilazione del tuo progetto prima di procedere con il codice.

  • jaxen.jar
  • dom4j-1.6.jar

2. Di seguito è riportato il codice per leggere i dati dal file XML.

		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. Inizialmente, dobbiamo creare un oggetto File e passarlo come parametro al metodo 'read' della classe SAXReader. Una volta letti correttamente i dati del file XML, possiamo accedere ai singoli nodi del documento XML utilizzando il metodo 'selectSingleNode'.

Passaggio 4) Utilizzo del file XML negli script di test

Il file XML può essere utilizzato negli script di test leggendo i dati dal file XML e passando i dati come parametro al metodo findElement. Il codice seguente dimostra l'utilizzo dei dati letti dal file XML negli script di test.

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

Il codice seguente dimostra l'uso del file XML 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();				

	}		
}		

Scarica il WebDriver Eclipse Progetto

Sommario

  • Un repository di oggetti è una posizione di archiviazione comune per tutti gli oggetti
  • Selenium WebDriver non offre un repository di oggetti integrato per impostazione predefinita
  • Puoi creare 2 tipi di repository di oggetti in Selenium
    1. Repository di oggetti utilizzando il file delle proprietà
    2. Repository di oggetti utilizzando file XML
  • Il file delle proprietà è un file di testo in cui i dati vengono archiviati sotto forma di coppie chiave-valore
  • Il formato file XML replicherà il formato HTML su cui è costruita la pagina web.