data driven framework selenium webdriver using apache poi
Wie arbeite ich mit Apache POI an einem datengesteuerten Framework in Selen?
Data Driven Framework ist eines der beliebtesten Automation Testing Frameworks auf dem aktuellen Markt. Datengesteuertes automatisiertes Testen ist eine Methode, bei der der Testdatensatz in der Excel-Tabelle erstellt und dann in Automatisierungstest-Tools importiert wird, um sie der zu testenden Software zuzuführen.
Selenium Webdriver ist ein großartiges Tool zur Automatisierung webbasierter Anwendungen. Lese- und Schreibvorgänge für Excel-Dateien werden jedoch nicht unterstützt.
Deshalb verwenden wir APIs von Drittanbietern wie Apache POI.
Was Sie in diesem Tutorial lernen werden:
- Was ist ein datengesteuertes Framework in Selenium WebDriver anhand eines Excel-Beispiels?
- Lesen und Schreiben von Daten aus Excel-Tabellen in Selenium WebDriver mithilfe von Apache POI
Was du lernen wirst:
- Was ist Apache POI?
- Warum Datenlaufwerkstests?
- Was brauchen wir, um Data Driven Framework zu implementieren?
- Schnittstelle im POI
- Die Schritte zur Verwendung von Selen mit Apache POI
- Vorteile der Verwendung von Data Driven Framework
- Fazit
- Literatur-Empfehlungen
Was ist Apache POI?
Apache POI (Poor Obfuscation Implementation) ist eine in Java geschriebene API zur Unterstützung von Lese- und Schreibvorgängen - zum Ändern von Office-Dateien. Dies ist die am häufigsten verwendete API für Datengesteuerte Selen-Tests .
Es gibt verschiedene Möglichkeiten, ein datengesteuertes Framework zu implementieren und jeder unterscheidet sich in dem Aufwand, der zur Entwicklung des Frameworks und der Wartung erforderlich ist.
Die Entwicklung eines datengesteuerten Frameworks in Selen mithilfe von POI hilft, die Wartung zu reduzieren, die Testabdeckung zu verbessern und somit einen guten Return on Investment zu erzielen.
Empfohlene Lektüre:
Unterschied zwischen Testfall und Testszenario
Warum Datenlaufwerkstests?
Oft kann es eine Reihe von Datensätzen geben, die zum Testen einer Funktion einer Anwendung verwendet werden müssen. Das manuelle Ausführen desselben Tests mit verschiedenen Daten ist zeitaufwändig, fehleranfällig und eine langweilige Aufgabe.
Lassen Sie uns dieses Szenario anhand eines Beispiels verstehen .
Angenommen, wir müssen das Login / Register / Any-Formular mit mehreren Eingabefeldern mit 100 verschiedenen Datensätzen testen.
Um dies zu testen, haben Sie drei verschiedene Ansätze:
1) Erstellen Sie 100 Skripte, eines für jeden Datensatz, und führen Sie jeden Test einzeln aus.
2) Ändern Sie die Daten im Skript und führen Sie sie mehrmals aus.
3) Importieren Sie die Daten aus der Excel-Tabelle und führen Sie das Skript mehrmals mit unterschiedlichen Daten aus.
Die ersten beiden Szenarien sind mühsam und zeitaufwändig - was einen niedrigen ROI impliziert. Daher müssen wir dem dritten Ansatz folgen.
Im dritten Ansatz wird das datengesteuerte Framework implementiert, bei dem sich alle unsere Daten in einer Excel-Tabelle befinden, aus der sie importiert und zum Testen der Funktionen der Anwendung verwendet werden.
=> Möchten Sie mehr über Data Driven Framework erfahren? Wir haben eine detaillierte Artikel können Sie hier überprüfen .
Was brauchen wir, um Data Driven Framework zu implementieren?
Um diesem Ansatz folgen zu können, muss Eclipse, TestNG ordnungsgemäß konfiguriert sein.
Sobald dies erledigt ist, werden wir uns Folgendes ansehen:
- Verschiedene Schnittstellen von Apache POI.
- Integration von Apache POI in die Eclipse.
- Lesen Sie Daten aus der Excel-Tabelle.
- Schreiben Sie Daten in die Excel-Tabelle.
- Vorteile der Verwendung von Apache POI mit Selen.
Schnittstelle im POI
Eines der bemerkenswertesten Merkmale von Apache POI ist, dass es Lese- und Schreibvorgänge sowohl für XLS- als auch für XLSX-Dateien unterstützt.
Nachfolgend sind einige der Schnittstellen von POI .
- XSSFWorkbook: Repräsentiert die Arbeitsmappe in der XLSX-Datei.
- HSSFWorkbook: Repräsentiert die Arbeitsmappe in der XLS-Datei.
- XSSFSheet: Stellt ein Blatt in einer XLSX-Datei dar.
- HSSFSheet: Stellt ein Blatt in einer XLS-Datei dar.
- XSSFRow: Stellt eine Zeile in einem Blatt einer XLSX-Datei dar.
- HSSFRow: Stellt eine Zeile in einem Blatt einer XLS-Datei dar.
- XSSFCell: Stellt eine Zelle in einer Reihe von XLSX-Dateien dar.
- HSSFCell: Stellt eine Zelle in einer Reihe von XLS-Dateien dar.
In einer Zelle verfügbare Felder:
- CELL_TYPE_BLANK: Stellt eine leere Zelle dar.
- CELL_TYPE_BOOLEAN: Stellt eine boolesche Zelle dar (wahr oder falsch).
- CELL_TYPE_ERROR: Stellt einen Fehlerwert in einer Zelle dar.
- CELL_TYPE_FORMULA: Stellt ein Formelergebnis für eine Zelle dar.
- CELL_TYPE_NUMERIC: Repräsentiert numerische Daten in einer Zelle.
- CELL_TYPE_STRING: Repräsentiert eine Zeichenfolge in einer Zelle.
Die Schritte zur Verwendung von Selen mit Apache POI
Lassen Sie uns ein Automatisierungsskript erstellen, um den Anmeldevorgang einer webbasierten Anwendung zu testen.
SQL-Szenario-basierte Fragen und Antworten
Hier habe ich LinkedIn genommen als Beispiel .
Wir importieren Daten aus einer Excel-Tabelle und melden uns dann bei der Anwendung an. Nach der Ausführung schreiben wir das Ergebnis in die Excel-Tabelle.
Wir benötigen die folgende auf unserem System installierte Software, um mit den Schritten zur Ausführung des Frameworks fortzufahren:
- Java JDK 1.7+
- Eclipse IDE
- TestNG
- Selengläser
- Microsoft Office / Open Office
Schritt 1)
Zunächst müssen wir Eclipse mit konfigurieren Apache POI .
Herunterladen JAR-Dateien für Apache POI.
Schritt 2)
Entpacken Sie die JAR-Datei, fügen Sie Ihrem Projekt die folgenden Jars hinzu und konfigurieren Sie sie.
- 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
Schritt 3)
Erstellen Sie nach der Konfiguration der jeweiligen Gläser eine Excel-Tabelle, geben Sie einige Daten ein und speichern Sie sie unter TestData.xlsx an Ihrem bevorzugten Ort.
Schritt 4)
Folgen wir nun dem Beispielcode, um Daten aus dem Excel-Blatt zu lesen und sich damit anzumelden 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()); } } }
Schritt 5)
Klicken Sie mit der rechten Maustaste auf die Testfallklasse und klicken Sie auf Führen Sie als -> TestNG Test aus.
Apache POI Importiert Daten aus dem Excel-Blatt und verwendet sie, um sich bei unserer Anwendung anzumelden. Nachdem wir nun gesehen haben, wie Daten aus dem Excel-Blatt gelesen werden, schauen wir uns an, wie Sie in das Blatt schreiben.
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(); } } }
Hinweis :: Wenn Sie während dieses Vorgangs auf Probleme stoßen, überprüfen Sie bitte die folgenden Punkte.
- Stellen Sie sicher, dass alle genannten Gläser zum Projekt hinzugefügt und ordnungsgemäß konfiguriert wurden.
- Erforderliche Software ist korrekt installiert.
- Ordnungsgemäße Verwendung einer Schnittstelle in Bezug auf Excel-Dateien wie HSSF für XLS und XSSF für XLSX.
- Es wird ein gültiger Zeilen- und Spaltenindex verwendet.
- Die Excel-Datei muss vor der Ausführung geschlossen werden.
- Richtige Klassen für die Excel-Datei wie XSSF für XLSX-Dateien und HSSF für XLS-Dateien.
Vorteile der Verwendung von Data Driven Framework
- Verbessert die Testabdeckung.
- Wiederverwendbarkeit von Code.
- Weniger Wartung.
- Schnellere Ausführung.
- Ermöglicht eine bessere Fehlerbehandlung.
Fazit
Die Eingabe / Ausgabe von und in eine Datei ist ein sehr wichtiger Bestandteil des Softwaretestprozesses. Apache POI spielt eine entscheidende Rolle, um dies für die Selenium Test Automation zu ermöglichen.
Ein Beispiel für eine funktionale Anforderung ist _________
Selen integriert mit Apache POI Ermöglicht es Ihnen, Ihr Skript mehrmals mit verschiedenen Datensätzen auszuführen, wobei alle Daten an einem einzigen Ort gespeichert werden. Dies spart Zeit und Wartungsaufwand für das Testskript.
Über die Autor: Dies ist ein Gastbeitrag von Vivek, einem QA Automation Engineer.
Haben Sie Fragen zur Implementierung des datengesteuerten Testframeworks in Selenium WebDriver mithilfe von Apache POI? Lass es uns in den Kommentaren unten wissen.
Literatur-Empfehlungen
- Selenium Framework Erstellung und Zugriff auf Testdaten aus Excel - Selenium Tutorial # 21
- Datengesteuertes oder parametrisiertes Testen mit Spock Framework
- Funktionsweise datengesteuerter Tests (Beispiele für QTP und Selen)
- Einführung in JUnit Framework und seine Verwendung in Selenium Script - Selenium Tutorial # 11
- So führen Sie datengesteuerte Tests mit dem TestComplete-Tool durch
- QTP-Tutorial Nr. 18 - Datengesteuerte und hybride Frameworks mit QTP-Beispielen
- Verwendung des TestNG-Frameworks zum Erstellen von Selenium-Skripten - TestNG Selenium Tutorial # 12
- So führen Sie datengesteuerte Tests in SoapUI Pro durch - SoapUI Tutorial Nr. 14