data driven framework selenium webdriver using apache poi
Как да работя върху Data Driven Framework в Selenium с помощта на Apache POI?
Data Driven Framework е една от популярните рамки за тестване на автоматизацията на текущия пазар. Автоматизираното тестване с данни, управлявано от данни, е метод, при който наборът от тестови данни се създава в листа на Excel и след това се импортира в инструменти за тестване на автоматизация, за да се подаде към тествания софтуер.
Selenium Webdriver е чудесен инструмент за автоматизиране на уеб-базирани приложения. Но не поддържа операции за четене и запис на Excel файлове.
Следователно ние използваме API на трети страни като Apache POI.
Какво ще научите в този урок:
- Какво представлява рамката, управлявана от данни в Selenium WebDriver, използвайки пример на Excel
- Как да четем и пишем данни от Excel лист в Selenium WebDriver с помощта на Apache POI
Какво ще научите:
- Какво представлява Apache POI?
- Защо тестове за данни?
- Какво ни е необходимо, за да приложим Framework, управляван от данни?
- Интерфейс в POI
- Стъпките за използване на селен с Apache POI
- Предимства на използването на Data Driven Framework
- Заключение
- Препоръчително четене
Какво представлява Apache POI?
Apache POI (Poor Obfuscation Implementation) е API, написан на Java, за да поддържа операции за четене и запис - промяна на офис файлове. Това е най-често използваният API Тестове, управлявани от селен .
Има няколко начина за внедряване на Data Driven Framework и всеки се различава в усилията, необходими за разработване на рамката и поддръжката.
Разработването на рамка за управление на данни в Selenium с помощта на POI помага за намаляване на поддръжката, подобряване на покритието на тестовете, като по този начин осигурява добра възвръщаемост на инвестициите.
Препоръчителни четива:
Защо тестове за данни?
Често може да има множество набори от данни, които трябва да се използват за тестване на характеристика на приложение. Сега провеждането на един и същ тест с различни данни ръчно отнема много време, предразполага към грешки и скучна задача.
Нека разберем този сценарий с пример .
Да предположим, че трябва да тестваме формуляра за вход / Регистрация / Всяка форма с множество полета за въвеждане със 100 различни набора от данни.
За да тествате това, имате три различни подхода:
1) Създайте 100 скрипта по един за всеки набор от данни и изпълнете всеки тест един по един.
две) Променете данните в скрипта и ги изпълнете няколко пъти.
3) Импортирайте данните от Excel листа и изпълнете скрипта няколко пъти с различни данни.
Първите два сценария са трудоемки, отнемащи време - предполагащи ниска възвръщаемост на инвестициите. Следователно трябва да следваме третия подход.
В третия подход се прилага рамката за управление на данни, където всички наши данни се намират в Excel лист, където се импортират от и се използват за тестване на характеристиките на приложението.
=> Искате ли да научите повече за Data Driven Framework? Имаме подробно статия можете да проверите тук .
Какво ни е необходимо, за да приложим Framework, управляван от данни?
За да следваме този подход, трябва да имаме Eclipse, TestNG конфигуриран правилно.
След като приключим, ще разгледаме:
- Различни интерфейси на Apache POI.
- Интеграция на Apache POI в Eclipse.
- Прочетете данни от листа на Excel.
- Напишете данни в Excel Sheet.
- Предимства на използването на Apache POI със селен.
Интерфейс в POI
Една от най-забележителните черти на Apache POI е, че поддържа операции за четене и запис както на .xls, така и на .xslx файлове.
По-долу са посочени някои от интерфейси на POI .
- XSSF Работна книга: Представлява работна книга в xlsx файл.
- Работна книга на HSSF: Представлява работна книга в xls файл.
- XSSFSheet: Представлява лист в XLSX файл.
- HSSF Sheet: Представлява лист в XLS файл.
- XSSFRow: Представлява ред в лист XLSX файл.
- HSSF Ред: Представлява ред в лист XLS файл.
- XSSFCell: Представлява клетка в ред от XLSX файл.
- HSSFC Продажба: Представлява клетка в ред от XLS файл.
Налични полета в клетка:
- CELL_TYPE_BLANK: Представлява празна клетка.
- CELL_TYPE_BOOLEAN: Представлява булева клетка (вярно или невярно).
- CELL_TYPE_ERROR: Представлява стойност на грешка в клетка.
- CELL_TYPE_FORMULA: Представлява резултат на формула в клетка.
- CELL_TYPE_NUMERIC: Представлява числови данни в клетка.
- CELL_TYPE_STRING: Представлява низ в клетка.
Стъпките за използване на селен с Apache POI
Нека създадем скрипт за автоматизация, за да тестваме процеса на влизане в уеб базирани приложения.
команди за скриптове на shell на unix с примери
Ето, взех LinkedIn като пример .
Импортираме данни от лист на Excel и след това ги използваме за влизане в приложението и след изпълнението записваме резултата в листа на Excel.
Нуждаем се от следния софтуер, инсталиран в нашата система, за да продължим със стъпките за изпълнение на рамката:
- Java JDK 1.7+
- Eclipse IDE
- ТестNG
- Буркани от селен
- Microsoft Office / Open Office
Етап 1)
Първо, трябва да конфигурираме Eclipse с Apache POI .
Изтегли jar файлове за Apache POI.
Стъпка 2)
Разархивирайте файла на jar и добавете следните буркани към вашия проект и ги конфигурирайте.
- 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
Стъпка # 3)
След конфигуриране на съответните буркани, създайте Excel лист, въведете в него някои данни и го запазете като TestData.xlsx на предпочитаното от вас място.
Стъпка # 4)
Сега нека следваме примерния код, за да прочетем данни от Excel листа и да го използваме за влизане в 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()); } } }
Стъпка # 5)
Щракнете с десния бутон върху класа на тестовия случай и кликнете върху Изпълнете като -> TestNG Test.
Apache POI импортира данни от Excel листа и ги използва за влизане в нашето приложение. Сега, когато видяхме как да четем данни от листа на Excel, нека разгледаме как да пишем на листа.
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(); } } }
Забележка : Ако срещнете някакви проблеми по време на този процес, моля, проверете следните точки.
- Уверете се, че всички споменати буркани са добавени към проекта и са правилно конфигурирани.
- Необходимият софтуер е правилно инсталиран.
- Правилно използване на интерфейс по отношение на Excel файл, като HSSF за .xls и XSSF за .xlsx.
- Използва се валиден индекс на редове и колони.
- Файлът на Excel трябва да бъде затворен преди изпълнение.
- Правилни класове, използвани за Excel файла, като XSSF, използван за .xlsx файлове и HSSF, използван за .xls файлове.
Предимства на използването на Data Driven Framework
- Подобрява покритието на теста.
- Повторно използване на кода.
- По-малко поддръжка.
- По-бързо изпълнение.
- Позволява по-добро обработване на грешки.
Заключение
Въвеждане / извеждане от и към файл е много критична част от процеса на тестване на софтуера. Apache POI играе жизненоважна роля, за да направи това възможно за автоматизация на тестове на селен.
Селен, интегриран с Apache POI Ви улеснява да стартирате скрипта си няколко пъти с различни набори от данни, като всички данни се поддържат на едно място. Спестява време и усилия за поддръжка на тестовия скрипт.
За автор: Това е гост пост от Vivek, QA Automation Engineer.
Имате ли някакви заявки за внедряване на базирана на данни рамка за тестване в Selenium WebDriver, използваща Apache POI? Уведомете ни в коментарите по-долу.
Препоръчително четене
- Създаване на Framework Selenium и достъп до тестови данни от Excel - Урок № 21 за Selenium
- Управлявано от данни или параметризирано тестване със Spock Framework
- Как работи тестването, управлявано от данни (примери за QTP и селен)
- Въведение в JUnit Framework и нейното използване в Selenium Script - Селен Урок # 11
- Как да извършите тестване на данни с помощта на инструмента TestComplete
- Урок за QTP # 18 - Управлявани от данни и хибридни рамки, обяснени с примери за QTP
- Как да използвам TestNG Framework за създаване на селенови скриптове - TestNG Selenium Tutorial # 12
- Как да извършите тестване на данни в SoapUI Pro - Урок SoapUI # 14