data driven framework selenium webdriver using apache poi
Jak pracovat na Data Driven Framework v selenu pomocí Apache POI?
Data Driven Framework je jedním z populárních Automation Testing Framework na současném trhu. Automatizované testování založené na datech je metoda, při které je sada dat testu vytvořena v listu aplikace Excel a poté je importována do nástrojů pro automatizaci testování, aby se zavedla do testovaného softwaru.
Selenium Webdriver je skvělý nástroj pro automatizaci webových aplikací. Ale nepodporuje operace čtení a zápisu na soubory aplikace Excel.
Proto používáme API třetích stran jako Apache POI.
Co se naučíte v tomto tutoriálu:
- Co je to datový rámec v Selenium WebDriver pomocí příkladu aplikace Excel
- Jak číst a zapisovat data z listu aplikace Excel v selenu WebDriver pomocí Apache POI
Co se naučíte:
- Co je to Apache POI?
- Proč testy datových jednotek?
- Co potřebujeme k implementaci Data Driven Framework?
- Rozhraní v POI
- Kroky k použití selenu s Apache POI
- Výhody používání rámce řízeného daty
- Závěr
- Doporučené čtení
Co je to Apache POI?
Apache POI (Poor Obfuscation Implementation) je API napsané v Javě, které podporuje operace čtení a zápisu - upravuje kancelářské soubory. Toto je nejběžnější API používané pro Testy založené na datech selenu .
Existuje několik způsobů, jak implementovat rámec řízený daty a každý se liší v úsilí potřebném k vývoji rámce a údržbě.
Vývoj rámce řízeného daty v selenu pomocí POI pomáhá snižovat údržbu, zlepšovat pokrytí testů a poskytovat tak dobrou návratnost investic.
Doporučené čtení:
Proč testy datových jednotek?
Často může existovat řada datových sad, které je třeba použít k otestování funkce aplikace. Ruční spuštění stejného testu s různými daty je časově náročné, náchylné k chybám a nudné.
Pochopme tento scénář na příkladu .
Předpokládejme, že musíme otestovat přihlašovací / registrační / libovolný formulář s více vstupními poli se 100 různými datovými sadami.
jak přidat maven k zatmění
K otestování máte tři různé přístupy:
1) Vytvořte 100 skriptů jeden pro každou datovou sadu a proveďte každý test jeden po druhém.
dva) Změňte data ve skriptu a proveďte je několikrát.
3) Importujte data z listu aplikace Excel a spusťte skript několikrát s různými daty.
První dva scénáře jsou pracné, časově náročné - což znamená nízkou návratnost investic. Proto musíme následovat třetí přístup.
Ve třetím přístupu implementujeme rámec řízený daty, kde jsou všechna naše data umístěna v listu aplikace Excel, kde jsou importována a používána k testování funkcí aplikace.
=> Chcete se dozvědět více o Data Driven Framework? Máme podrobný článek můžete zkontrolovat zde .
Co potřebujeme k implementaci Data Driven Framework?
Abychom mohli tento přístup dodržovat, musíme mít správně nakonfigurovaný Eclipse, TestNG.
Po dokončení se podíváme na:
- Různá rozhraní Apache POI.
- Integrace POI Apache do Eclipse.
- Čtení dat z listu aplikace Excel.
- Zápis dat do listu aplikace Excel.
- Výhody použití Apache POI se selenem.
Rozhraní v POI
Jeden z nejpozoruhodnějších rysů Apache POI je to, že podporuje operace čtení a zápisu na soubory .xls a .xslx.
Níže jsou uvedeny některé z rozhraní POI .
- Pracovní kniha XSSF: Představuje sešit v souboru xlsx.
- HSSFWorkbook: Představuje sešit v souboru xls.
- List XSSF: Představuje list v souboru XLSX.
- List HSSFS: Představuje list v souboru XLS.
- XSSFRow: Představuje řádek v listu souboru XLSX.
- HSSFRow: Představuje řádek v listu souboru XLS.
- XSSFCell: Představuje buňku v řádku souboru XLSX.
- HSSFCell: Představuje buňku v řádku souboru XLS.
Pole dostupná v buňce:
- CELL_TYPE_BLANK: Představuje prázdnou buňku.
- CELL_TYPE_BOOLEAN: Představuje booleovskou buňku (true nebo false).
- CELL_TYPE_ERROR: Představuje chybovou hodnotu v buňce.
- CELL_TYPE_FORMULA: Představuje výsledek vzorce v buňce.
- CELL_TYPE_NUMERIC: Představuje číselná data v buňce.
- CELL_TYPE_STRING: Představuje řetězec v buňce.
Kroky k použití selenu s Apache POI
Vytvořme automatizační skript, který otestuje proces přihlášení webových aplikací.
Tady jsem vzal LinkedIn jako příklad .
Importujeme data z listu aplikace Excel a poté je použijeme k přihlášení do aplikace a po provedení zapíšeme výsledek do listu aplikace Excel.
Abychom mohli pokračovat v provádění kroků v rámci, potřebujeme v našem systému nainstalovaný následující software:
- Java JDK 1.7+
- Zatmění IDE
- TestNG
- Selenové nádoby
- Microsoft Office / Open Office
Krok 1)
Nejprve musíme nakonfigurovat Eclipse s Apache POI .
Stažení jar soubory pro Apache POI.
Krok 2)
Rozbalte soubor jar a přidejte do projektu následující sklenice a nakonfigurujte je.
- dom4j-1.6.1.jar
- poi-3.10-FINÁLNÍ-20140208.jar
- poi-ooxml-3.10-FINAL-20140208.jar
- poi-ooxml-schemas-3.10-FINAL-20140208.jar
- xmlbeans-2.3.0.jar
Krok č. 3)
Po konfiguraci příslušných sklenic vytvořte list aplikace Excel, zadejte do něj některá data a uložte jej jako TestData.xlsx ve vámi preferovaném místě.
Krok č. 4)
Nyní pojďme podle ukázkového kódu přečíst data z listu aplikace Excel a použít je k přihlášení 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()); } } }
Krok č. 5)
Klikněte pravým tlačítkem na třídu testovacích případů a klikněte na Spustit jako -> TestNG Test.
Apache POI importuje data z listu aplikace Excel a používá je k přihlášení do naší aplikace. Nyní, když jsme viděli, jak číst data z listu aplikace Excel, pojďme se podívat, jak zapisovat do listu.
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(); } } }
Poznámka : Pokud během tohoto procesu narazíte na nějaké problémy, zkontrolujte prosím následující body.
- Ujistěte se, že všechny zmíněné sklenice jsou přidány do projektu a jsou správně nakonfigurovány.
- Požadovaný software je správně nainstalován.
- Správné použití rozhraní s ohledem na soubor aplikace Excel, jako je HSSF pro XLS a XSSF pro XLSX.
- Použije se platný index řádků a sloupců.
- Soubor Excel musí být před spuštěním uzavřen.
- Správné třídy používané pro soubor aplikace Excel, jako je XSSF pro soubory .xlsx a HSSF pro soubory .xls.
Výhody používání rámce řízeného daty
- Zlepšuje pokrytí testů.
- Opakovaná použitelnost kódu.
- Méně údržby.
- Rychlejší provedení.
- Umožňuje lepší zpracování chyb.
Závěr
Vstup / výstup ze souboru do souboru je velmi důležitou součástí procesu testování softwaru. Apache POI hraje zásadní roli v tom, že je to možné pro automatizaci testování selenu.
Selen integrovaný s Apache POI usnadňuje spuštění skriptu vícekrát s různými datovými sadami, přičemž všechna data jsou udržována na jednom místě. Šetří čas a úsilí spojené s údržbou testovacího skriptu.
O autor: Toto je příspěvek od Vivek, QA Automation Engineer.
Máte nějaké dotazy týkající se implementace testovacího rámce založeného na datech v selenu WebDriver pomocí POI Apache? Dejte nám vědět v komentářích níže.
Doporučené čtení
- Vytváření rámce selenu a přístup k testovacím datům z aplikace Excel - Selenium Tutorial # 21
- Testování na základě dat nebo parametrizace pomocí Spock Framework
- Jak funguje testování založené na datech (příklady QTP a selenu)
- Úvod do rámce JUnit a jeho použití v Selenium Script - Selenium Tutorial # 11
- Jak provádět testování na základě dat pomocí nástroje TestComplete
- Výukový program QTP č. 18 - Data řízená a hybridní rozhraní vysvětlena na příkladech QTP
- Jak používat rámec TestNG pro vytváření skriptů selenu - návod k testování selenu TestNG # 12
- Jak provádět testování řízené daty v SoapUI Pro - SoapUI Tutorial # 14