data driven framework selenium webdriver using apache poi
Hvordan arbejder jeg med datadrevet ramme i selen ved hjælp af Apache POI?
Data Driven Framework er en af de populære Automation Testing Framework på det nuværende marked. Datadrevet automatiseret test er en metode, hvor testdatasættet oprettes i excel-arket og derefter importeres til automatiseringstestværktøjer for at føje til den software, der testes.
Selenium Webdriver er et fantastisk værktøj til at automatisere webbaserede applikationer. Men det understøtter ikke læse- og skrivehandlinger på Excel-filer.
Derfor bruger vi tredjeparts API'er ligesom Apache POI.
Hvad du lærer i denne vejledning:
- Hvad er datadrevet ramme i Selenium WebDriver ved hjælp af excel-eksempel
- Sådan læses og skrives data fra excel-ark i Selenium WebDriver ved hjælp af Apache POI
Hvad du lærer:
- Hvad er Apache POI?
- Hvorfor test af datadrev?
- Hvad har vi brug for til at implementere Data Driven Framework?
- Interface i POI
- Trinene til brug af Selenium med Apache POI
- Fordele ved at bruge datadrevet ramme
- Konklusion
- Anbefalet læsning
Hvad er Apache POI?
Apache POI (Poor Obfuscation Implementation) er en API skrevet i Java til understøttelse af læse- og skriveoperationer - ændring af kontorfiler. Dette er den mest almindelige API, der bruges til Selen datadrevne test .
Der er flere måder at implementere en datadrevet ramme på , og hver adskiller sig i den krævede indsats for at udvikle rammen og vedligeholdelsen.
kan ikke oprette forbindelse til standard gateway
Udvikling af datadrevet ramme i Selen ved hjælp af POI hjælper med at reducere vedligeholdelse, forbedre testdækning og dermed give et godt investeringsafkast.
Anbefalet læser:
Hvorfor test af datadrev?
Ofte kan der være et antal datasæt, der skal bruges til at teste en funktion i en applikation. At køre den samme test med forskellige data manuelt er tidskrævende, fejlbehæftet og en kedelig opgave.
Lad os forstå dette scenarie med et eksempel .
Antag, at vi har brug for at teste login / Register / Enhver form med flere inputfelter med 100 forskellige datasæt.
For at teste dette har du tre forskellige tilgange:
1) Opret 100 scripts et for hvert datasæt, og udfør hver test en efter en.
2) Skift data i scriptet, og udfør det flere gange.
3) Importer dataene fra excel-arket, og udfør scriptet flere gange med forskellige data.
De første to scenarier er besværlige, tidskrævende - hvilket indebærer lavt investeringsafkast. Derfor skal vi følge den tredje tilgang.
I den tredje tilgang implementerer vi den datadrevne ramme, hvor alle vores data ligger i et excel-ark, hvor de importeres fra og bruges til at teste funktionerne i applikationen.
=> Vil du lære mere om datadrevet ramme? Vi har en detaljeret beskrivelse artikel kan du tjekke her .
Hvad har vi brug for til at implementere Data Driven Framework?
For at følge denne tilgang skal vi have Eclipse, TestNG korrekt konfigureret.
Når det er gjort, vil vi se på:
- Forskellige grænseflader til Apache POI.
- Integration af Apache POI i formørkelsen.
- Læs data fra Excel-arket.
- Skriv data til Excel-arket.
- Fordele ved at bruge Apache POI med Selen.
Interface i POI
Et af de mest bemærkelsesværdige træk ved Apache IP er, at den understøtter læse- og skrivehandlinger på både .xls- og .xslx-filer.
Nedenfor er nogle af de grænseflader til POI .
- XSSF Arbejdsbog: Repræsenterer projektmappe i xlsx-fil.
- HSSF Arbejdsbog: Repræsenterer projektmappe i xls-fil.
- XSSFSark: Repræsenterer et ark i XLSX-fil.
- HSSFSark: Repræsenterer et ark i XLS-fil.
- XSSFRow: Repræsenterer en række i et ark med XLSX-filen.
- HSSFRow: Repræsenterer en række i et ark med XLS-fil.
- XSSFCell: Repræsenterer en celle i en række af XLSX-filen.
- HSSFCell: Repræsenterer en celle i en række af XLS-filen.
Felter tilgængelige i en celle:
- CELL_TYPE_BLANK: Repræsenterer en tom celle.
- CELL_TYPE_BOOLEAN: Repræsenterer en boolsk celle (sand eller falsk).
- CELL_TYPE_ERROR: Repræsenterer en fejlværdi i en celle.
- CELL_TYPE_FORMULA: Repræsenterer et formelresultat på en celle.
- CELL_TYPE_NUMERIC: Repræsenterer numeriske data i en celle.
- CELL_TYPE_STRING: Repræsenterer streng i en celle.
Trinene til brug af Selenium med Apache POI
Lad os oprette et automatiseringsscript for at teste loginprocessen for en webbaseret applikation.
livscyklusmodel i softwareteknik
Her har jeg taget LinkedIn som et eksempel .
Vi importerer data fra et excel-ark og bruger det derefter til at logge ind på applikationen, og efter udførelse skriver vi resultatet i excel-arket.
Vi har brug for følgende software installeret på vores system for at fortsætte med trinene til at udføre rammen:
- Java JDK 1.7+
- Formørkelse IDE
- TestNG
- Selen krukker
- Microsoft Office / Open Office
Trin 1)
For det første skal vi konfigurere Eclipse med Apache IP .
Hent jar-filer til Apache POI.
Trin 2)
Pak jar-filen ud, og tilføj følgende krukker til dit projekt, og konfigurer dem.
- dom4j-1.6.1.jar
- poi-3.10-FINAL-20140208.jar
- poi-ooxml-3.10-FINAL-20140208.jar
- poi-ooxml-skemaer-3.10-FINAL-20140208.jar
- xmlbeans-2.3.0.jar
Trin # 3)
Efter konfiguration af de respektive krukker skal du oprette et Excel-ark, indtaste nogle data i det og gemme det som TestData.xlsx på dit foretrukne sted.
Trin # 4)
Lad os nu følge prøvekoden for at læse data fra excel-arket og bruge den til at logge ind på 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()); } } }
Trin # 5)
Højreklik på test case-klassen, og klik på Kør som -> TestNG Test.
Apache IP importerer data fra excel-arket og bruger det til at logge ind på vores applikation. Nu hvor vi så, hvordan man læser data fra excel-arket, skal vi se på, hvordan man skriver til arket.
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(); } } }
Bemærk : Hvis du støder på problemer under denne proces, skal du kontrollere følgende punkter.
- Sørg for, at alle de nævnte krukker føjes til projektet og er korrekt konfigureret.
- Påkrævet software er korrekt installeret.
- Korrekt brug af en grænseflade med hensyn til excel-fil, som HSSF til .xls og XSSF til .xlsx.
- Gyldigt række- og kolonneindeks bruges.
- Excel-filen skal lukkes inden udførelse.
- Korrekte klasser, der bruges til excel-filen som XSSF, der bruges til .xlsx-filer og HSSF, der bruges til .xls-filer.
Fordele ved at bruge datadrevet ramme
- Forbedrer testdækningen.
- Genanvendelighed af kode.
- Mindre vedligeholdelse.
- Hurtigere udførelse.
- Tillader bedre fejlhåndtering.
Konklusion
Input / output fra og til en fil er en meget kritisk del af softwaretestprocessen. Apache IP spiller en vigtig rolle for at gøre dette muligt for Selenium Test Automation.
Selen integreret med Apache IP letter dig med at køre dit script flere gange med forskellige datasæt, hvor alle data holdes på et sted. Det sparer tid og vedligeholdelsesindsats på testscriptet.
Omkring forfatter: Dette er et gæstepost af Vivek, en QA Automation Engineer.
Har du spørgsmål til implementering af den datadrevne testramme i Selenium WebDriver ved hjælp af Apache POI? Lad os vide i kommentarerne nedenfor.
Anbefalet læsning
- Selen Framework Oprettelse og adgang til testdata fra Excel - Selenium Tutorial # 21
- Datadrevet eller parametreret test med Spock Framework
- Sådan fungerer datadrevet test (eksempler på QTP og selen)
- Introduktion til JUnit Framework og dens anvendelse i Selenium Script - Selen Tutorial # 11
- Sådan udføres datadrevet test ved hjælp af TestComplete-værktøjet
- QTP-tutorial # 18 - Datadrevne og hybridrammer forklaret med QTP-eksempler
- Sådan bruges TestNG Framework til oprettelse af selen-scripts - TestNG Selen Tutorial # 12
- Sådan udføres datadrevet test i SoapUI Pro - SoapUI Tutorial # 14