data driven framework selenium webdriver using apache poi
Hur arbetar jag med Data Driven Framework i Selen med hjälp av Apache POI?
Data Driven Framework är en av de populäraste Automation Testing Framework på den nuvarande marknaden. Datadriven automatiserad testning är en metod där testdatauppsättningen skapas i excel-arket och sedan importeras till automatiseringstestverktyg för att mata till programvaran som testas.
Selenium Webdriver är ett utmärkt verktyg för att automatisera webbaserade applikationer. Men det stöder inte läs- och skrivoperationer på Excel-filer.
hur man lägger till värden i en matris
Därför använder vi tredjeparts API: er som Apache POI.
Vad du lär dig i denna handledning:
- Vad är datadrivet ramverk i Selenium WebDriver med hjälp av excel exempel
- Hur man läser och skriver data från excel-ark i Selenium WebDriver med hjälp av Apache POI
Vad du kommer att lära dig:
- Vad är Apache POI?
- Varför testa dataenheter?
- Vad behöver vi för att implementera Data Driven Framework?
- Gränssnitt i IP
- Stegen för att använda Selenium med Apache POI
- Fördelar med att använda datadriven ramverk
- Slutsats
- Rekommenderad läsning
Vad är Apache POI?
Apache POI (Poor Obfuscation Implementation) är ett API skrivet i Java för att stödja läs- och skrivoperationer - modifiering av office-filer. Detta är det vanligaste API som används för Selen datadrivna tester .
Det finns flera sätt att implementera ett datadrivet ramverk , och var och en skiljer sig åt i det arbete som krävs för att utveckla ramverket och underhållet.
Att utveckla datadrivet ramverk i Selen med POI hjälper till att minska underhållet, förbättra testtäckningen och därmed ge en bra avkastning på investeringen.
Rekommenderade läser:
Varför testa dataenheter?
Ofta kan det finnas ett antal datamängder som måste användas för att testa en funktion i en applikation. Att köra samma test med olika data manuellt är tidskrävande, felbenäget och en tråkig uppgift.
Låt oss förstå detta scenario med ett exempel .
Antag att vi måste testa inloggningen / Registrera / Vilken form som helst med flera inmatningsfält med 100 olika datamängder.
För att testa detta har du tre olika tillvägagångssätt:
1) Skapa 100 skript en för varje dataset och kör varje test en efter en.
två) Ändra data i skriptet och kör det flera gånger.
3) Importera data från excel-arket och kör skriptet flera gånger med olika data.
De första två scenarierna är mödosamma, tidskrävande - vilket innebär låg avkastning. Därför måste vi följa den tredje metoden.
I det tredje tillvägagångssättet implementerar vi datadrivna ramverk, där alla våra data finns i ett excel-ark, där de importeras från och används för att testa funktionerna i applikationen.
=> Vill du lära dig mer om Data Driven Framework? Vi har en detaljerad beskrivning artikel kan du kolla här .
Vad behöver vi för att implementera Data Driven Framework?
För att följa detta tillvägagångssätt måste vi ha Eclipse, TestNG korrekt konfigurerat.
När det är gjort kommer vi att titta på:
- Olika gränssnitt för Apache POI.
- Integration av Apache POI i förmörkelsen.
- Läs data från Excel-arket.
- Skriv data till Excel-arket.
- Fördelar med att använda Apache POI med Selen.
Gränssnitt i IP
En av de mest anmärkningsvärda funktionerna i Apache IP är att den stöder läs- och skrivoperationer på både .xls- och .xslx-filer.
Nedan nämns några av de gränssnitt för intressepunkter .
- XSSF Arbetsbok: Representerar arbetsbok i xlsx-fil.
- HSSF Arbetsbok: Representerar arbetsbok i xls-fil.
- XSSFSark: Representerar ett ark i XLSX-filen.
- HSSFSark: Representerar ett ark i XLS-fil.
- XSSFRow: Representerar en rad i ett ark med XLSX-filen.
- HSSFRow: Representerar en rad i ett ark med XLS-fil.
- XSSFCell: Representerar en cell i en rad med XLSX-filen.
- HSSFCell: Representerar en cell i en rad med XLS-filen.
Fält tillgängliga i en cell:
- CELL_TYPE_BLANK: Representerar en tom cell.
- CELL_TYPE_BOOLEAN: Representerar en boolesk cell (sant eller falskt).
- CELL_TYPE_ERROR: Representerar ett felvärde i en cell.
- CELL_TYPE_FORMULA: Representerar ett formelresultat i en cell.
- CELL_TYPE_NUMERIC: Representerar numeriska data i en cell.
- CELL_TYPE_STRING: Representerar sträng i en cell.
Stegen för att använda Selenium med Apache POI
Låt oss skapa ett automatiseringsskript för att testa inloggningsprocessen för webbaserade applikationer.
vad är livscykel för mjukvaruutveckling?
Här har jag tagit LinkedIn som ett exempel .
Vi importerar data från ett excel-ark och använder det sedan för att logga in i applikationen och efter körning skriver vi resultatet i excel-arket.
Vi behöver följande programvara installerad på vårt system för att fortsätta med stegen för att utföra ramverket:
- Java JDK 1.7+
- Förmörkelse IDE
- TestNG
- Selenburkar
- Microsoft Office / Open Office
Steg 1)
För det första måste vi konfigurera Eclipse med Apache IP .
Ladda ner jar-filer för Apache POI.
Steg 2)
Packa upp jar-filen och lägg till följande burkar i ditt projekt och konfigurera dem.
- 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
Steg 3)
Efter att ha konfigurerat respektive burkar, skapa ett excel-ark, ange några data i det och spara det som TestData.xlsx på din önskade plats.
Steg 4)
Låt oss nu följa exempelkoden för att läsa data från excel-arket och använda den för att logga in 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()); } } }
Steg # 5)
Högerklicka på testfallsklassen och klicka på Kör som -> TestNG Test.
Apache IP importerar data från excel-arket och använder det för att logga in i vår applikation. Nu när vi såg hur man läser data från excel-arket, låt oss titta på hur man skriver till 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(); } } }
Notera : Om du stöter på några problem under denna process, kontrollera följande punkter.
- Se till att alla nämnda burkar läggs till i projektet och är korrekt konfigurerade.
- Nödvändig programvara är korrekt installerad.
- Korrekt användning av ett gränssnitt med avseende på Excel-fil, som HSSF för .xls och XSSF för .xlsx.
- Giltigt rad- och kolumnindex används.
- Excel-filen måste stängas innan den körs.
- Korrekta klasser som används för Excel-filen som XSSF används för .xlsx-filer och HSSF används för .xls-filer.
Fördelar med att använda datadriven ramverk
- Förbättrar testtäckningen.
- Återanvändning av kod.
- Mindre underhåll.
- Snabbare utförande.
- Tillåter bättre felhantering.
Slutsats
Input / Output från och till en fil är en mycket kritisk del av programvarutestningsprocessen. Apache IP spelar en viktig roll för att göra detta möjligt för Selenium Test Automation.
Selen integrerat med Apache IP underlättar för dig att köra ditt skript flera gånger med olika datamängder, med all data underhållen på en enda plats. Det sparar tid och underhållsarbete på testskriptet.
Om författare: Detta är ett gästinlägg av Vivek, en QA Automation Engineer.
Har du några frågor som implementerar det datadrivna testramverket i Selenium WebDriver med hjälp av Apache POI? Låt oss veta i kommentarerna nedan.
Rekommenderad läsning
- Selen Framework Creation and Accessing Test Data from Excel - Selenium Tutorial # 21
- Datadriven eller parametrerad testning med Spock Framework
- Hur datadriven testning fungerar (exempel på QTP och selen)
- Introduktion till JUnit Framework and Its Use in Selenium Script - Selenium Tutorial # 11
- Hur man utför datadriven testning med TestComplete-verktyget
- QTP-handledning # 18 - Datadrivna och hybridramar förklarade med QTP-exempel
- Hur man använder TestNG Framework för att skapa Selen-skript - TestNG Selen Tutorial # 12
- Hur man utför datadriven testning i SoapUI Pro - SoapUI-handledning nr 14