data driven framework selenium webdriver using apache poi
Как да работя върху Data Driven Framework в Selenium с помощта на Apache POI?
въпроси и отговори за интервюта на python
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
Нека създадем скрипт за автоматизация, за да тестваме процеса на влизане в уеб базирани приложения.
Ето, взех 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 играе жизненоважна роля, за да направи това възможно за автоматизация на тестове на селен.
команди за скриптове на shell на unix с примери
Селен, интегриран с 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