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.

  • ๐Ÿ—‚๏ธ Concetto principale: Memorizza i localizzatori dell'interfaccia utente come coppie chiave-valore, tenuti separati da Selenium Logica di test di WebDriver.
  • ๐Ÿ“„ Approccio tramite file di proprietร : Memorizza i localizzatori in un file di testo .properties, letto in fase di esecuzione tramite la classe java.util.Properties.
  • ๐Ÿงฉ Approccio tramite file XML: Utilizzare un file XML con il Document Object Model e dom4j per leggere i localizzatori tramite selectSingleNode.
  • ๐Ÿ”ง Flusso di implementazione: Crea il file, memorizza i dati chiave-valore, leggi i valori nelle variabili, quindi passali alla funzione findElement.
  • ๐Ÿ›ก๏ธ Beneficio di manutenzione: Quando un localizzatore cambia, aggiornare solo il file del repository, non tutti i casi di test interessati.

Repository di oggetti in Selenium

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.

  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, 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

  1. 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.

Creazione di un file delle proprietร  in Eclipse

  1. Fai clic con il pulsante destro del mouse sulla cartella principale del progetto e seleziona 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. Nella finestra "Nuova risorsa file", inserisci un nome file valido con estensione '.properties' e fai clic sul pulsante 'Fine'.

Creazione di un file delle proprietร  in Eclipse

  1. Nella struttura del progetto deve essere visualizzato un file denominato 'application.properties'.

Creazione di un file delle proprietร  in Eclipse

Passaggio 2) Memorizzazione dei dati nel file delle proprietร 

  1. I dati vengono memorizzati in un file di proprietร  sotto forma di coppie chiave-valore, dove la chiave รจ univoca all'interno del file.
  2. Proveremo a utilizzare il file delle proprietร  per identificare gli elementi web tramite 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:

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ร 

  1. La lettura dei dati da un file di proprietร  puรฒ essere effettuata utilizzando la classe Properties integrata fornita nel pacchetto java.util.
  2. Inizialmente, รจ necessario creare un oggetto della classe Properties come segue
  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 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.

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. Seleziona il file XML all'interno della cartella XML e fai clic sul pulsante 'Avanti'.

Creazione di un file XML in Eclipse

  1. Inserisci un nome file XML valido e fai 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 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

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 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

DOMANDE FREQUENTI

Un repository di oggetti memorizza esternamente solo i localizzatori degli elementi. Il Page Object Model รจ un modello piรน ampio che incapsula i localizzatori e le azioni della pagina all'interno delle classi di pagina.

Sรฌ. I localizzatori possono anche essere memorizzati in file Excel o CSV, letti utilizzando una libreria come Apache POI e passati a findElement.

Utilizza chiavi chiare e descrittive, raggruppa i localizzatori per pagina, prediligi localizzatori stabili come l'ID ed evita i duplicati. Mantieni un repository per modulo in modo che una modifica al localizzatore aggiorni una singola voce.

Sรฌ. Diversi strumenti basati sull'intelligenza artificiale analizzano una pagina, rilevano gli elementi ed esportano i localizzatori predefiniti in un repository. I tester dovrebbero comunque verificare la stabilitร  dei localizzatori.

La funzionalitร  di auto-riparazione basata sull'IA osserva gli attributi degli elementi durante l'esecuzione e, quando un localizzatore memorizzato si guasta, seleziona automaticamente una corrispondenza alternativa. Ciรฒ consente di mantenere i test in esecuzione nonostante piccole modifiche all'interfaccia e riduce la manutenzione.

Riassumi questo post con: