data driven framework selenium webdriver using apache poi
Jak pracować na Data Driven Framework w Selenium przy użyciu Apache POI?
Data Driven Framework to jedna z popularnych na obecnym rynku ram automatyzacji testów. Testowanie automatyczne oparte na danych to metoda, w której zestaw danych testowych jest tworzony w arkuszu programu Excel, a następnie importowany do narzędzi do testowania automatyzacji w celu przesłania do testowanego oprogramowania.
Selenium Webdriver to świetne narzędzie do automatyzacji aplikacji internetowych. Ale nie obsługuje operacji odczytu i zapisu na plikach programu Excel.
Dlatego używamy API innych firm jak Apache POI.
Czego nauczysz się w tym samouczku:
- Czym jest framework oparty na danych w Selenium WebDriver na przykładzie programu Excel
- Jak czytać i zapisywać dane z arkusza Excela w Selenium WebDriver przy użyciu Apache POI
Czego się nauczysz:
- Co to jest Apache POI?
- Dlaczego testy dysków z danymi?
- Czego potrzebujemy do wdrożenia Data Driven Framework?
- Interfejs w POI
- Kroki korzystania z Selenium z Apache POI
- Zalety korzystania z Data Driven Framework
- Wniosek
- rekomendowane lektury
Co to jest Apache POI?
Apache POI (Poor Obfuscation Implementation) to interfejs API napisany w języku Java do obsługi operacji odczytu i zapisu - modyfikowania plików biurowych. Jest to najczęściej używany interfejs API dla Testy oparte na danych selenu .
Istnieje kilka sposobów implementacji struktury opartej na danych i każdy różni się wysiłkiem wymaganym do opracowania struktury i utrzymania.
Tworzenie frameworka opartego na danych w Selenium przy użyciu POI pomaga ograniczyć konserwację, poprawić pokrycie testów, zapewniając tym samym dobry zwrot z inwestycji.
Zalecane lektury:
Dlaczego testy dysków z danymi?
Często może istnieć wiele zestawów danych, których należy użyć do przetestowania funkcji aplikacji. Teraz ręczne uruchamianie tego samego testu z różnymi danymi jest czasochłonne, podatne na błędy i nudne.
Zrozummy ten scenariusz na przykładzie .
Różnica c i c ++
Załóżmy, że musimy przetestować login / rejestr / dowolny formularz z wieloma polami wejściowymi ze 100 różnymi zestawami danych.
Aby to przetestować, masz trzy różne podejścia:
1) Utwórz 100 skryptów po jednym dla każdego zestawu danych i wykonaj każdy test jeden po drugim.
dwa) Zmień dane w skrypcie i wykonaj go wielokrotnie.
3) Zaimportuj dane z arkusza programu Excel i wykonaj skrypt wiele razy z różnymi danymi.
Pierwsze dwa scenariusze są pracochłonne i czasochłonne - implikują niski zwrot z inwestycji. Dlatego musimy zastosować trzecie podejście.
W trzecim podejściu wdrażamy framework Data Driven, w którym wszystkie nasze dane znajdują się w arkuszu Excela, skąd są importowane i wykorzystywane do testowania funkcji aplikacji.
=> Chcesz dowiedzieć się więcej o strukturze opartej na danych? Mamy szczegółowy artykuł, który możesz sprawdzić tutaj .
Czego potrzebujemy do wdrożenia Data Driven Framework?
Aby zastosować to podejście, musimy mieć odpowiednio skonfigurowane Eclipse, TestNG.
Po zakończeniu przyjrzymy się:
- Różne interfejsy Apache POI.
- Integracja Apache POI w Eclipse.
- Przeczytaj dane z arkusza Excel.
- Zapisz dane do arkusza Excel.
- Zalety używania Apache POI z Selenium.
Interfejs w POI
Jedna z najbardziej niezwykłych funkcji Apache POI polega na tym, że obsługuje operacje odczytu i zapisu na plikach .xls i .xslx.
Poniżej wymienione są niektóre z interfejsy POI .
- XSSFWorkbook: Reprezentuje skoroszyt w pliku xlsx.
- HSSFWorkbook: Reprezentuje skoroszyt w pliku xls.
- Arkusz XSSFS: Reprezentuje arkusz w pliku XLSX.
- Arkusz HSSFS: Reprezentuje arkusz w pliku XLS.
- XSSFRow: Reprezentuje wiersz w arkuszu pliku XLSX.
- HSSFRow: Reprezentuje wiersz w arkuszu pliku XLS.
- XSSFCell: Reprezentuje komórkę w wierszu pliku XLSX.
- HSSFCell: Reprezentuje komórkę w wierszu pliku XLS.
Pola dostępne w komórce:
najlepszy kompilator dla C ++
- CELL_TYPE_BLANK: Reprezentuje pustą komórkę.
- CELL_TYPE_BOOLEAN: Reprezentuje komórkę logiczną (prawda lub fałsz).
- CELL_TYPE_ERROR: Reprezentuje wartość błędu w komórce.
- CELL_TYPE_FORMULA: Reprezentuje wynik formuły w komórce.
- CELL_TYPE_NUMERIC: Reprezentuje dane liczbowe w komórce.
- CELL_TYPE_STRING: Reprezentuje ciąg w komórce.
Kroki korzystania z Selenium z Apache POI
Stwórzmy skrypt automatyzacji, aby przetestować proces logowania w aplikacjach internetowych.
Tutaj wziąłem LinkedIn jako przykład .
Importujemy dane z arkusza Excela, a następnie używamy ich do logowania do aplikacji i po wykonaniu zapisujemy wynik w arkuszu Excela.
Potrzebujemy następującego oprogramowania zainstalowanego w naszym systemie, aby kontynuować kroki w celu wykonania frameworka:
- Java JDK 1.7+
- Eclipse IDE
- TestNG
- Słoiki z selenem
- Microsoft Office / Open Office
Krok 1)
Po pierwsze, musimy skonfigurować Eclipse z Apache POI .
Ściągnij jar dla Apache POI.
Darmowy prywatny serwer World of Warcraft
Krok 2)
Rozpakuj plik jar i dodaj następujące pliki jar do projektu i skonfiguruj je.
- 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
Krok 3)
Po skonfigurowaniu odpowiednich słoików utwórz arkusz programu Excel, wprowadź w nim dane i zapisz jako TestData.xlsx w preferowanej lokalizacji.
Krok 4)
Teraz postępujmy zgodnie z przykładowym kodem, aby odczytać dane z arkusza programu Excel i użyć go do zalogowania się 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)
Kliknij prawym przyciskiem myszy klasę przypadku testowego i kliknij Uruchom jako -> TestNG Test.
Apache POI importuje dane z arkusza Excela i wykorzystuje je do logowania się do naszej aplikacji. Teraz, gdy zobaczyliśmy, jak odczytywać dane z arkusza programu Excel, przyjrzyjmy się, jak pisać w arkuszu.
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(); } } }
Uwaga : Jeśli napotkasz jakiekolwiek problemy podczas tego procesu, sprawdź następujące punkty.
- Upewnij się, że wszystkie wspomniane pliki jar zostały dodane do projektu i odpowiednio skonfigurowane.
- Wymagane oprogramowanie jest poprawnie zainstalowane.
- Prawidłowe użycie interfejsu w odniesieniu do pliku Excel, np. HSSF dla .xls i XSSF dla .xlsx.
- Używany jest prawidłowy indeks wiersza i kolumny.
- Plik Excela należy zamknąć przed wykonaniem.
- Właściwe klasy używane dla pliku programu Excel, takie jak XSSF używane dla plików .xlsx i HSSF używane dla plików .xls.
Zalety korzystania z Data Driven Framework
- Poprawia pokrycie testów.
- Możliwość ponownego wykorzystania kodu.
- Mniej konserwacji.
- Szybsze wykonanie.
- Pozwala na lepszą obsługę błędów.
Wniosek
Wejście / wyjście z pliku i do pliku jest bardzo krytyczną częścią procesu testowania oprogramowania. Apache POI odgrywa istotną rolę w umożliwieniu automatyzacji testów Selenium.
Selen zintegrowany z Apache POI ułatwia uruchamianie skryptu wiele razy z różnymi zestawami danych, przy czym wszystkie dane są przechowywane w jednym miejscu. Oszczędza czas i wysiłek związany z konserwacją skryptu testowego.
O autor: To jest post gościnny napisany przez Viveka, inżyniera automatyzacji kontroli jakości.
Czy masz jakieś pytania dotyczące implementacji struktury testowania opartego na danych w Selenium WebDriver przy użyciu Apache POI? Daj nam znać w komentarzach poniżej.
rekomendowane lektury
- Tworzenie Selenium Framework i dostęp do danych testowych z Excela - samouczek Selenium # 21
- Testowanie oparte na danych lub parametryzowane za pomocą Spock Framework
- Jak działa testowanie oparte na danych (przykłady QTP i selenu)
- Wprowadzenie do JUnit Framework i jego wykorzystanie w skrypcie Selenium - Samouczek Selenium # 11
- Jak przeprowadzić testy oparte na danych za pomocą narzędzia TestComplete
- QTP Tutorial # 18 - Objaśnienie struktur opartych na danych i hybrydowych z przykładami QTP
- Jak używać platformy TestNG do tworzenia skryptów selenium - Samouczek TestNG Selenium nr 12
- Jak przeprowadzić testy oparte na danych w SoapUI Pro - Samouczek SoapUI nr 14