data driven framework selenium webdriver using apache poi
Cum se lucrează la Data Driven Framework în Selenium folosind Apache POI?
Data Driven Framework este unul dintre cele mai populare Automation Testing Framework de pe piața actuală. Testarea automată bazată pe date este o metodă în care setul de date de testare este creat în foaia Excel și este apoi importat în instrumentele de testare a automatizării pentru a fi introdus în software-ul testat.
Selenium Webdriver este un instrument excelent pentru automatizarea aplicațiilor bazate pe web. Dar nu acceptă operațiile de citire și scriere pe fișiere Excel.
Prin urmare, folosim API-uri terță parte cum ar fi Apache POI.
Ce veți învăța în acest tutorial:
- Ce este cadrul bazat pe date în Selenium WebDriver folosind exemplul excel
- Cum să citiți și să scrieți date din foaia Excel în Selenium WebDriver folosind Apache POI
Ce veți învăța:
- Ce este Apache POI?
- De ce testele de stocare a datelor?
- De ce avem nevoie pentru a implementa Data Driven Framework?
- Interfață în POI
- Pașii pentru utilizarea Selenium cu Apache POI
- Avantajele utilizării cadrului bazat pe date
- Concluzie
- Lectură recomandată
Ce este Apache POI?
Apache POI (Poor Obfuscation Implementation) este un API scris în Java pentru a sprijini operațiile de citire și scriere - modificarea fișierelor office. Acesta este cel mai comun API folosit pentru Testele bazate pe date de seleniu .
Există mai multe moduri de a implementa un cadru bazat pe date , și fiecare diferă în efortul necesar pentru a dezvolta cadrul și întreținerea.
Dezvoltarea cadrului bazat pe date în seleniu utilizând POI ajută la reducerea întreținerii, la îmbunătățirea acoperirii testelor, oferind astfel un profit bun al investiției.
Citiri recomandate:
De ce testele de stocare a datelor?
De multe ori pot exista mai multe seturi de date care trebuie utilizate pentru a testa o caracteristică a unei aplicații. Rularea manuală a aceluiași test cu date diferite este consumatoare de timp, predispusă la erori și o sarcină plictisitoare.
Să înțelegem acest scenariu cu un exemplu .
Să presupunem că trebuie să testăm datele de conectare / Înregistrare / Orice formular cu mai multe câmpuri de intrare cu 100 de seturi de date diferite.
Pentru a testa acest lucru, aveți trei abordări diferite:
care este cea mai bună aplicație vr
1) Creați 100 de scripturi unul pentru fiecare set de date și executați fiecare test unul câte unul.
Două) Schimbați datele din script și executați-le de mai multe ori.
3) Importați datele din foaia Excel și executați scriptul de mai multe ori cu date diferite.
Primele două scenarii sunt laborioase, consumatoare de timp - implicând un ROI scăzut. Prin urmare, trebuie să urmăm a treia abordare.
În cea de-a treia abordare, implementăm cadrul Data Driven, unde toate datele noastre se află într-o foaie Excel, de unde sunt importate și utilizate pentru a testa caracteristicile aplicației.
=> Doriți să aflați mai multe despre Data Driven Framework? Avem un detaliu articol pe care îl puteți verifica aici .
De ce avem nevoie pentru a implementa Data Driven Framework?
Pentru a urma această abordare trebuie să avem Eclipse, TestNG configurat corespunzător.
Odată terminat, ne vom uita la:
- Diverse interfețe ale Apache POI.
- Integrarea Apache POI în Eclipse.
- Citiți datele din foaia Excel.
- Scrieți date pe foaia Excel.
- Avantajele utilizării Apache POI cu Selenium.
Interfață în POI
Una dintre cele mai remarcabile caracteristici ale Apache POI este că acceptă operații de citire și scriere atât pe fișierele .xls, cât și pe cele .xslx.
Mai jos menționate sunt câteva dintre interfețele POI .
- XSSFWorkbook: Reprezintă registrul de lucru în fișierul xlsx.
- HSSFWorkbook: Reprezintă registrul de lucru în fișierul xls.
- Foaie XSSF: Reprezintă o foaie în fișierul XLSX.
- Foaie HSSFS: Reprezintă o foaie în fișierul XLS.
- XSSFRow: Reprezintă un rând într-o foaie de fișier XLSX.
- HSSFRow: Reprezintă un rând într-o foaie de fișier XLS.
- XSSFCell: Reprezintă o celulă dintr-un rând de fișier XLSX.
- HSSFCell: Reprezintă o celulă dintr-un rând de fișier XLS.
Câmpuri disponibile într-o celulă:
- CELL_TYPE_BLANK: Reprezintă o celulă necompletată.
- CELL_TYPE_BOOLEAN: Reprezintă o celulă booleană (adevărată sau falsă).
- CELL_TYPE_ERROR: Reprezintă o valoare de eroare într-o celulă.
- CELL_TYPE_FORMULA: Reprezintă un rezultat de formulă pe o celulă.
- CELL_TYPE_NUMERIC: Reprezintă date numerice într-o celulă.
- CELL_TYPE_STRING: Reprezintă șirul într-o celulă.
Pașii pentru utilizarea Selenium cu Apache POI
Permiteți-ne să creăm un script de automatizare pentru a testa procesul de conectare a aplicațiilor bazate pe web.
schimbătoare de voce care funcționează cu discordie
Aici am luat LinkedIn ca exemplu .
Importăm date dintr-o foaie Excel și apoi le folosim pentru a vă conecta la aplicație și după executare, scriem rezultatul în foaia Excel.
Avem nevoie de următorul software instalat pe sistemul nostru pentru a continua cu pașii de executare a cadrului:
- Java JDK 1.7+
- Eclipse IDE
- TestNG
- Borcane de seleniu
- Microsoft Office / Open Office
Pasul 1)
În primul rând, trebuie să configurăm Eclipse cu Apache POI .
Descarca fișiere jar pentru Apache POI.
Pasul 2)
Dezarhivați fișierul jar și adăugați următoarele borcane în proiect și configurați-le.
- 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
Pasul 3)
După configurarea borcanelor respective, creați o foaie Excel, introduceți câteva date în ea și salvați-o ca TestData.xlsx la locația preferată.
Pasul 4)
Acum, haideți să urmăm exemplul de cod pentru a citi datele din foaia Excel și să le folosim pentru a vă conecta 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()); } } }
Pasul 5)
Faceți clic dreapta pe clasa cazului de testare și faceți clic pe Rulați ca -> TestNG Test.
Apache POI importă date din foaia Excel și le folosește pentru a vă conecta la aplicația noastră. Acum că am văzut cum să citim date din foaia Excel, să analizăm cum să scriem pe foaie.
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(); } } }
Notă : Dacă întâmpinați probleme în timpul acestui proces, vă rugăm să verificați următoarele puncte.
- Asigurați-vă că toate borcanele menționate sunt adăugate la proiect și sunt configurate corect.
- Software-ul necesar este instalat corect.
- Utilizarea corectă a unei interfețe cu privire la fișierul Excel, cum ar fi HSSF pentru .xls și XSSF pentru .xlsx.
- Se utilizează indexul de rând și coloană valid.
- Fișierul Excel trebuie închis înainte de executare.
- Clase adecvate utilizate pentru fișierul Excel, cum ar fi XSSF utilizat pentru fișierele .xlsx și HSSF utilizat pentru fișierele .xls.
Avantajele utilizării cadrului bazat pe date
- Îmbunătățește acoperirea testelor.
- Reutilizarea codului.
- Mai puțină întreținere.
- Execuție mai rapidă.
- Permite o mai bună gestionare a erorilor.
Concluzie
Intrarea / ieșirea din și către un fișier este o parte foarte importantă a procesului de testare a software-ului. Apache POI joacă un rol vital în a face acest lucru posibil pentru Selenium Test Automation.
Seleniu integrat cu Apache POI vă facilitează să rulați scriptul de mai multe ori cu seturi de date diferite, cu toate datele păstrate într-o singură locație. Economisește timp și efort de întreținere pentru scriptul de testare.
Despre autor: Acesta este un post de invitat de Vivek, inginer automatizare QA.
Aveți întrebări care implementează cadrul de testare bazat pe date în Selenium WebDriver folosind Apache POI? Spuneți-ne în comentariile de mai jos.
Lectură recomandată
- Crearea cadrului Selenium și accesarea datelor de testare din Excel - Tutorial Selenium # 21
- Testare bazată pe date sau parametrizată cu Spock Framework
- Cum funcționează testarea bazată pe date (exemple de QTP și seleniu)
- Introducere în JUnit Framework și utilizarea sa în Selenium Script - Selenium Tutorial # 11
- Cum se efectuează testarea bazată pe date folosind instrumentul TestComplete
- QTP Tutorial # 18 - Cadrele bazate pe date și hibride explicate cu exemple QTP
- Cum se folosește TestNG Framework pentru crearea de scripturi Selenium - TestNG Selenium Tutorial # 12
- Cum se efectuează teste bazate pe date în SoapUI Pro - Tutorial SoapUI # 14