data driven framework selenium webdriver using apache poi
Come lavorare su Data Driven Framework in Selenium utilizzando Apache POI?
Data Driven Framework è uno dei più diffusi framework di test di automazione nel mercato attuale. Il test automatizzato basato sui dati è un metodo in cui il set di dati del test viene creato nel foglio Excel e quindi importato negli strumenti di test di automazione per alimentare il software sottoposto a test.
Selenium Webdriver è un ottimo strumento per automatizzare le applicazioni basate sul web. Ma non supporta le operazioni di lettura e scrittura sui file Excel.
Pertanto, usiamo API di terze parti come Apache POI.
Cosa imparerai in questo tutorial:
- Cos'è il framework basato sui dati in Selenium WebDriver usando l'esempio di Excel
- Come leggere e scrivere dati dal foglio Excel in Selenium WebDriver utilizzando Apache POI
Cosa imparerai:
- Cos'è Apache POI?
- Perché i test sui dati?
- Di cosa abbiamo bisogno per implementare Data Driven Framework?
- Interface in POI
- I passaggi per utilizzare Selenium con Apache POI
- Vantaggi dell'utilizzo di Data Driven Framework
- Conclusione
- Lettura consigliata
Cos'è Apache POI?
Apache POI (Poor Obfuscation Implementation) è un'API scritta in Java per supportare le operazioni di lettura e scrittura, modificando i file di Office. Questa è l'API più comune utilizzata per Selenio test guidati dai dati .
Esistono diversi modi per implementare un Data Driven Framework e ciascuno differisce per lo sforzo richiesto per sviluppare la struttura e la manutenzione.
Lo sviluppo del framework Data Driven in Selenium utilizzando POI aiuta a ridurre la manutenzione, migliorare la copertura dei test fornendo così un buon ritorno sull'investimento.
Letture consigliate:
Perché i test sui dati?
Spesso potrebbe esserci un numero di set di dati che devono essere utilizzati per testare una funzione di un'applicazione. Ora eseguire manualmente lo stesso test con dati diversi richiede tempo, è soggetto a errori e un'attività noiosa.
app spia per iphone e android
Cerchiamo di capire questo scenario con un esempio .
Supponiamo di dover testare il modulo login / Register / Any con più campi di input con 100 diversi set di dati.
Per verificarlo hai tre diversi approcci:
1) Crea 100 script uno per ogni set di dati ed esegui ogni test uno per uno.
Due) Modificare i dati nello script ed eseguirlo più volte.
3) Importa i dati dal foglio Excel ed esegui lo script più volte con dati diversi.
I primi due scenari sono laboriosi, richiedono tempo e implicano un ROI basso. Quindi, dobbiamo seguire il terzo approccio.
Nel terzo approccio, stiamo implementando il framework Data Driven, dove tutti i nostri dati risiedono in un foglio Excel, da cui vengono importati e utilizzati per testare le funzionalità dell'applicazione.
=> Vuoi saperne di più su Data Driven Framework? Abbiamo una dettagliata articolo che puoi controllare qui .
Di cosa abbiamo bisogno per implementare Data Driven Framework?
Per seguire questo approccio dobbiamo avere Eclipse, TestNG configurato correttamente.
Una volta fatto, esamineremo:
- Varie interfacce di Apache POI.
- Integrazione di Apache POI in Eclipse.
- Leggi i dati dal foglio Excel.
- Scrivi i dati sul foglio Excel.
- Vantaggi dell'utilizzo di Apache POI con Selenium.
Interface in POI
Una delle caratteristiche più notevoli di Apache POI è che supporta operazioni di lettura e scrittura su file .xls e .xslx.
Di seguito sono menzionati alcuni dei interfacce di POI .
- XSSFWorkbook: Rappresenta la cartella di lavoro nel file xlsx.
- HSSFWorkbook: Rappresenta la cartella di lavoro nel file xls.
- XSSFSheet: Rappresenta un foglio in un file XLSX.
- HSSFSheet: Rappresenta un foglio in file XLS.
- XSSFRow: Rappresenta una riga in un foglio di file XLSX.
- HSSFRow: Rappresenta una riga in un foglio di file XLS.
- XSSFCell: Rappresenta una cella in una riga del file XLSX.
- HSSFCell: Rappresenta una cella in una riga del file XLS.
Campi disponibili in una cella:
- CELL_TYPE_BLANK: Rappresenta una cella vuota.
- CELL_TYPE_BOOLEAN: Rappresenta una cella booleana (vero o falso).
- CELL_TYPE_ERROR: Rappresenta un valore di errore in una cella.
- CELL_TYPE_FORMULA: Rappresenta il risultato di una formula su una cella.
- CELL_TYPE_NUMERIC: Rappresenta i dati numerici in una cella.
- CELL_TYPE_STRING: Rappresenta una stringa in una cella.
I passaggi per utilizzare Selenium con Apache POI
Creiamo uno script di automazione per testare il processo di accesso di un'applicazione basata sul web.
domande di colloquio sul test di penetrazione delle applicazioni web
Ecco, ho preso LinkedIn come esempio .
Importiamo i dati da un foglio excel e poi li usiamo per accedere all'applicazione e dopo l'esecuzione, scriviamo il risultato nel foglio excel.
Abbiamo bisogno del seguente software installato sul nostro sistema per continuare con i passaggi per eseguire il framework:
- Java JDK 1.7+
- Eclipse IDE
- TestNG
- Vasetti di selenio
- Microsoft Office / Open Office
Passo 1)
Innanzitutto, dobbiamo configurare Eclipse con Apache POI .
Scarica file jar per i POI di Apache.
Passo 2)
Decomprimere il file jar e aggiungere i seguenti jar al progetto e configurarli.
- dom4j-1.6.1.jar
- poi-3.10-FINAL-20140208.jar
- poi-ooxml-3.10-FINAL-20140208.jar
- poi-ooxml-schemas-3.10-FINAL-20140208.jar
- xmlbeans-2.3.0.jar
Passaggio 3)
Dopo aver configurato i rispettivi barattoli, crea un foglio Excel, inserisci alcuni dati al suo interno e salvalo come TestData.xlsx nella tua posizione preferita.
Passaggio 4)
Ora seguiamo il codice di esempio per leggere i dati dal foglio Excel e utilizzarlo per accedere a linkedin.com .
package automationFramework; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.concurrent.TimeUnit; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.support.ui.WebDriverWait; import org.testng.annotations.BeforeTest; import org.testng.annotations.Test; /** * @author Admin * */ public class ReadWriteExcel { WebDriver driver; WebDriverWait wait; HSSFWorkbook workbook; HSSFSheet sheet; HSSFCell cell; @BeforeTest public void TestSetup() { // Set the path of the Firefox driver. System.setProperty('webdriver.gecko.driver', 'C:\Users\geckodriver.exe'); driver = new FirefoxDriver(); // Enter url. driver.get('http://www.linkedin.com/'); driver.manage().window().maximize(); wait = new WebDriverWait(driver,30); driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); } @Test public void ReadData() throws IOException { // Import excel sheet. File src=new File('C:\Users\Admin\Desktop\TestData.xls'); // Load the file. FileInputStream finput = new FileInputStream(src); // Load he workbook. workbook = new HSSFWorkbook(finput); // Load the sheet in which data is stored. sheet= workbook.getSheetAt(0); for(int i=1; i<=sheet.getLastRowNum(); i++) { // Import data for Email. cell = sheet.getRow(i).getCell(1); cell.setCellType(Cell.CELL_TYPE_STRING); driver.findElement(By.id('login-email')).sendKeys(cell.getStringCellValue()); // Import data for password. cell = sheet.getRow(i).getCell(2); cell.setCellType(Cell.CELL_TYPE_STRING); driver.findElement(By.id('login-password')).sendKeys(cell.getStringCellValue()); } } }
Passaggio 5)
Fare clic con il tasto destro sulla classe del test case e fare clic su Esegui come -> TestNG Test.
Apache POI importa i dati dal foglio Excel e li utilizza per accedere alla nostra applicazione. Ora che abbiamo visto come leggere i dati dal foglio Excel, vediamo come scrivere sul foglio.
package automationFramework; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.concurrent.TimeUnit; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFSheet; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.ss.usermodel.Cell; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.support.ui.WebDriverWait; import org.testng.annotations.BeforeTest; import org.testng.annotations.Test; /** * @author Admin * */ public class ReadWriteExcel { WebDriver driver; WebDriverWait wait; HSSFWorkbook workbook; HSSFSheet sheet; HSSFCell cell; @BeforeTest public void TestSetup() { // Set the path of the Firefox driver. System.setProperty('webdriver.gecko.driver', 'C:\Users\geckodriver.exe'); driver = new FirefoxDriver(); // Enter url. driver.get('http://www.linkedin.com/'); driver.manage().window().maximize(); wait = new WebDriverWait(driver,30); driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); } @Test public void ReadData() throws IOException { // Import excel sheet. File src=new File('C:\Users\Admin\Desktop\TestData.xls'); // Load the file. FileInputStream finput = new FileInputStream(src); // Load he workbook. workbook = new HSSFWorkbook(finput); // Load the sheet in which data is stored. sheet= workbook.getSheetAt(0); for(int i=1; i<=sheet.getLastRowNum(); i++) { // Import data for Email. cell = sheet.getRow(i).getCell(1); cell.setCellType(Cell.CELL_TYPE_STRING); driver.findElement(By.id('login-email')).sendKeys(cell.getStringCellValue()); // Import data for password. cell = sheet.getRow(i).getCell(2); cell.setCellType(Cell.CELL_TYPE_STRING); driver.findElement(By.id('login-password')).sendKeys(cell.getStringCellValue()); // Write data in the excel. FileOutputStream foutput=new FileOutputStream(src); // Specify the message needs to be written. String message = 'Data Imported Successfully.'; // Create cell where data needs to be written. sheet.getRow(i).createCell(3).setCellValue(message); // Specify the file in which data needs to be written. FileOutputStream fileOutput = new FileOutputStream(src); // finally write content workbook.write(fileOutput); // close the file fileOutput.close(); } } }
Nota : In caso di problemi durante questo processo, controllare i seguenti punti.
- Assicurati che tutti i vasi menzionati siano aggiunti al progetto e siano configurati correttamente.
- Il software richiesto è installato correttamente.
- Uso corretto di un'interfaccia rispetto al file excel, come HSSF per .xls e XSSF per .xlsx.
- Viene utilizzato un indice di riga e colonna valido.
- Il file Excel deve essere chiuso prima dell'esecuzione.
- Classi appropriate utilizzate per il file Excel come XSSF utilizzato per i file .xlsx e HSSF utilizzato per i file .xls.
Vantaggi dell'utilizzo di Data Driven Framework
- Migliora la copertura dei test.
- Riutilizzabilità del codice.
- Meno manutenzione.
- Esecuzione più rapida.
- Consente una migliore gestione degli errori.
Conclusione
L'input / output da e verso un file è una parte molto critica del processo di test del software. Apache POI svolge un ruolo fondamentale nel rendere questo possibile per Selenium Test Automation.
Selenio integrato con Apache POI facilita l'esecuzione dello script più volte con diversi set di dati, con tutti i dati mantenuti in un'unica posizione. Risparmia tempo e sforzi di manutenzione sullo script di test.
Riguardo a autore: Questo è un guest post di Vivek, un QA Automation Engineer.
Hai domande sull'implementazione del framework di test basato sui dati in Selenium WebDriver utilizzando Apache POI? Fateci sapere nei commenti qui sotto.
Lettura consigliata
- Creazione di Selenium Framework e accesso ai dati di test da Excel - Selenium Tutorial # 21
- Test basato sui dati o parametrizzato con Spock Framework
- Come funziona il test basato sui dati (esempi di QTP e selenio)
- Introduzione a JUnit Framework e al suo utilizzo in Selenium Script - Selenium Tutorial # 11
- Come eseguire test basati sui dati utilizzando lo strumento TestComplete
- Tutorial QTP n. 18 - Framework basati sui dati e ibridi spiegati con esempi QTP
- Come utilizzare TestNG Framework per la creazione di script di selenio - TestNG Selenium Tutorial # 12
- Come eseguire test basati sui dati in SoapUI Pro - SoapUI Tutorial n. 14