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.
- Repository di oggetti utilizzando il file delle proprietà
- 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.
- Creazione di un file di proprietà in Eclipse
- Memorizzazione dei dati nel file delle proprietà
- Lettura dei dati dal file delle proprietà
- Utilizzo del file delle proprietà negli script di test
Passaggio 1) Creazione di un file di proprietà in Eclipse
- 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.
- Fare clic con il tasto destro sulla cartella principale del progetto e selezionare Nuovo-> Altro
- Nella finestra successiva, seleziona Generale -> File e fai clic sul pulsante "Avanti".
- Fornire un nome file valido con l'estensione ".properties" nella nuova finestra delle risorse file e fare clic sul pulsante "Fine"
- Un file denominato "application.properties" deve essere visualizzato nella struttura del progetto
Passaggio 2) Memorizzazione dei dati nel file delle proprietà
- I dati vengono archiviati nel file delle proprietà sotto forma di coppie chiave-valore, con la chiave univoca in tutto il file.
- Cercheremo di utilizzare il file delle proprietà per identificare gli elementi web utilizzando i valori di localizzazione.
- 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
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à
- La lettura dei dati dal file delle proprietà può essere eseguita utilizzando la classe Properties incorporata fornita nel pacchetto java.util.
- Inizialmente, è necessario creare un oggetto della classe Properties come di seguito
Properties obj = new Properties();
- Dobbiamo creare un oggetto della classe FileInputStream con il percorso del file delle proprietà
FileInputStream objfile = new FileInputStream(System.getProperty("user.dir")+"\\application.properties");
- 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.
- Creazione di un file XML in Eclipse
- Memorizzazione dei dati su file XML
- Lettura dei dati da file XML
- Utilizzo del file XML negli script di test
Passaggio 1) Creazione di un file XML in Eclipse
- È necessario creare la struttura del progetto Java seguente Eclipse.
- Fare clic con il tasto destro sulla cartella del progetto, selezionare Nuovo -> Altro
- Selezionare il file XML all'interno della cartella XML e fare clic sul pulsante "Avanti".
- Immettere un nome file XML valido e fare clic sul pulsante "Fine".
- Un file XML verrà aggiunto alla cartella del progetto come mostrato di seguito
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
Nella scheda di progettazione vedrai
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
- Repository di oggetti utilizzando il file delle proprietà
- 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.