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













