Repository di oggetti in Selenium
โก Riepilogo intelligente
Repository di oggetti in Selenium Centralizza i localizzatori degli elementi in un singolo file esterno, separandoli dagli script di test. Questo approccio migliora la manutenzione e consente ai tester di aggiornare i localizzatori in un unico punto anzichรฉ modificare numerosi casi di test.

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 principale vantaggio dell'utilizzo di un repository di oggetti รจ la separazione degli oggetti dai casi di test. Se il valore del localizzatore di un elemento web cambia, รจ necessario modificare solo il repository degli oggetti, anzichรฉ apportare modifiche a tutti i casi di test in cui il localizzatore รจ stato utilizzato. La gestione 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 di default. Tuttavia, รจ possibile creare repository di oggetti utilizzando l'approccio chiave-valore, in cui la chiave si riferisce al nome assegnato 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, un file di proprietร รจ un file di testo in cui i dati sono memorizzati sotto forma di coppie chiave-valore. Il tutorial seguente tratterร i seguenti argomenti.
Passaggio 1) Creazione di un file di proprietร in Eclipse
- Per iniziare, รจ necessario creare la seguente struttura di progetto Java in Eclipse. Il nome del progetto e il nome del pacchetto possono essere qualsiasi nome valido.
- Fai clic con il pulsante destro del mouse sulla cartella principale del progetto e seleziona Nuovo -> Altro
- Nella finestra successiva, seleziona Generale -> File e fai clic sul pulsante 'Avanti'.
- Nella finestra "Nuova risorsa file", inserisci un nome file valido con estensione '.properties' e fai clic sul pulsante 'Fine'.
- Nella struttura del progetto deve essere visualizzato un file denominato 'application.properties'.
Passaggio 2) Memorizzazione dei dati nel file delle proprietร
- I dati vengono memorizzati in un file di proprietร sotto forma di coppie chiave-valore, dove la chiave รจ univoca all'interno del file.
- Proveremo a utilizzare il file delle proprietร per identificare gli elementi web tramite 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:
https://demo.guru99.com/test/guru99home/Ecco lo scenario di test:
- Fai clic sul collegamento Mobile Testing utilizzando XPATH
- Torna indietro
- Inserisci i dati nella casella di testo dell'email utilizzando l'ID
- Fare clic sul pulsante Iscriviti utilizzando l'ID
Passaggio 3) Lettura dei dati dal file delle proprietร
- La lettura dei dati da un file di proprietร puรฒ essere effettuata utilizzando la classe Properties integrata fornita nel pacchetto java.util.
- Inizialmente, รจ necessario creare un oggetto della classe Properties come segue
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 da un file di proprietร puรฒ essere effettuata utilizzando il metodo `load` offerto dalla classe `Properties` in Java. Il codice seguente mostra 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
Un file di proprietร puรฒ essere utilizzato negli script di test leggendo i dati da tale file e passandoli come parametro al metodo findElement. Il codice seguente mostra l'utilizzo dei dati letti da un file di 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("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); // Navigate 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 รจ l'acronimo di Extensible Markup Language. Un file XML utilizza il Document Object Model (DOM) come struttura di base. Il formato del file XML replica il formato HTML su cui รจ costruita la pagina web. Di seguito รจ riportato 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
- Seleziona il file XML all'interno della cartella XML e fai clic sul pulsante 'Avanti'.
- Inserisci un nome file XML valido e fai 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 memorizzati in un file XML sotto forma di Document Object Model (DOM). Per semplicitร , possiamo utilizzare il seguente scenario di test come esempio.
- Fai clic sul collegamento Mobile Testing utilizzando XPATH
- Torna alla pagina iniziale
- Inserisci i dati nella casella di testo dell'email 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 da un file XML puรฒ essere effettuata utilizzando la classe integrata 'dom4j' di Java. Si noti che รจ necessario aggiungere i file JAR indicati di seguito al percorso di compilazione del 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
Un file XML puรฒ essere utilizzato negli script di test leggendo i dati dal file XML e passandoli come parametro al metodo findElement. Il codice seguente mostra l'utilizzo dei dati letti da un 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'utilizzo di un 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("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(); } }
Scarica il WebDriver Eclipse Progetto













