selenium framework creation
Im letzten Tutorial haben wir Sie mit dem vertraut gemacht Grundlagen der Testautomatisierung Frameworks , seine Komponenten und Typen. Die im vorherigen Tutorial dargestellten Frameworks gehörten zu den beliebtesten Frameworks, die von der Test-Bruderschaft verwendet wurden.
Wir haben kurz auf modulbasierte Frameworks, bibliotheksarchitekturbasiertes Framework, schlüsselwortgesteuertes Framework, datengesteuertes Framework und hybrides Framework eingegangen. Es gibt auch verschiedene andere Frameworks im Ort.
Bitte nehmen Sie zur Kenntnis, dass wir übernehmen würden Data Driven Test Automation Framework für den Rest unserer Tutorials.
In der Strömung Tutorial in dieser Reihe Wir würden Sie mit einem bekannt machen Beispiel-Framework, die Excels, die die Testdaten und ihre Excel-Manipulationen speichern würden . In diesem Sinne würden wir vorwärts gehen und neue Strategien und Ressourcen einführen, um unser Framework zu reifen.
Lernen wir also:
- Strategie zur Framework-Erstellung anhand eines Beispielprojekts
- Greifen Sie auf die in der externen Datenquelle gespeicherten Testdaten zu
In Zukunft beginnen wir mit der Beschreibung der Projekthierarchie, die wir erstellen würden, um die verschiedenen Projektkomponenten zu trennen.
In der folgenden Abbildung finden Sie die Projekthierarchie, die für das Beispielprojekt erstellt wurde. Das folgende Java-Projekt kann innerhalb der Eclipse einfach so erstellt werden, wie wir die Projekte in den früheren Tutorials erstellt haben.
Was du lernen wirst:
- Ordnerstruktur des Selen-Projekts - Exemplarische Vorgehensweise
- Testdatenerstellung
- Fazit:
- Literatur-Empfehlungen
Ordnerstruktur des Selen-Projekts - Exemplarische Vorgehensweise
# 1) src - Der Ordner enthält alle Testskripte, Generika, Lesegeräte und Dienstprogramme. Alle diese Ressourcen sind nichts anderes als die einfachen Java-Klassen. Unter dem Quellordner (src) haben wir eine Hierarchie von Ordnern erstellt.
ein Test - Der Ordner „Test“ besteht hauptsächlich aus zwei Bestandteilen: der Testsuite und den Ordnern, die die verschiedenen Module der zu testenden Anwendung darstellen. Daher enthält jeder dieser Ordner die Testskripte, die für das Modul spezifisch sind, dem er zugeordnet ist. Testsuite ist eine logische Kombination von mehr als einem Testskript. Auf diese Weise kann der Benutzer einen Eintrag eines der Testskripte innerhalb der Testsuite markieren, die er in den nachfolgenden Läufen ausführen möchte.
wie man private Methoden mit mockito testet
b) Dienstprogramme - Der Ordner 'Dienstprogramme' besteht aus verschiedenen Generika, Konstanten, Lesern und Klassen zum Implementieren benutzerdefinierter Ausnahmen. Jeder der Ordner unter Dienstprogrammen hat seine eigene Bedeutung.
- Excel Reader - Es wurde eine generische und allgemeine Klasse erstellt, um die Testdaten (Eingabeparameter und erwartete Ergebnisse) aus den Excel-Tabellen zu lesen
- Umweltkonstanten - Der Ordner ist die Integration der Java-Klassen, in denen die statischen Variablen gespeichert sind, die auf die Pfade und andere Umgebungsdetails verweisen. Diese Details können Anwendungs-URL, URL zu den Datenbanken, Anmeldeinformationen für Datenbanken und URL zu jedem verwendeten Tool eines Drittanbieters sein. Die unterschiedlichen Anwendungs-URLs können für verschiedene Umgebungen festgelegt werden (Entwickler, Produkt, Test, Master, Slave usw.).
- DataSetter - Der Ordner enthält die Klassen, die die Getter und Setter der aus den Excels abgerufenen Testdaten implementieren. Um mehrere Sätze von Testdaten zu laden, erstellen wir ArrayLists.
- Benutzerregeln - Der Ordner enthält die Klassen, die sich gegebenenfalls um die rollenbasierten Zugriffskriterien für instinktive Benutzer kümmern.
- FunctionLibrary - Der Ordner besteht aus den Klassen, die Funktionen und Methoden enthalten, die von mehreren Klassen gemeinsam genutzt und verwendet werden können. Sehr oft sollten wir bestimmte Verfahren vor und nach der eigentlichen Testausführung ausführen, z. B. die Anmeldung bei der Anwendung, das Einrichten von Umgebungen, Aktivitäten im Zusammenhang mit Rollen, Datenmanipulationen, das Schreiben von Ergebnissen und Methoden, die Vor- / Nachbedingungen für andere Methoden erzeugen . Da wir dazu neigen, diese Aktivitäten für das gesamte oder den größten Teil des Testskripts auszuführen. Daher wird immer empfohlen, eine separate Klasse für solche Aktivitäten zu erstellen, anstatt sie in jedem der Testskripte wiederholt zu codieren.
- PreConditionalMethods
- PostConditionalMethods
Sehr oft sollen wir bestimmte Verfahren vor und nach der eigentlichen Testausführung ausführen, z. B. die Anmeldung bei der Anwendung, das Einrichten von Umgebungen, Aktivitäten in Bezug auf Benutzerrollen, Datenmanipulationen, das Schreiben von Ergebnissen und Methoden, die Vor- / Nachbedingungen für andere generieren Methoden. Da wir diese Aktivitäten in der Regel für alle oder die meisten Testskripte ausführen, wird immer empfohlen, für solche Aktivitäten eine separate Klasse zu erstellen, anstatt sie in jedem Testskript wiederholt zu codieren.
CommonMethods
Wie vor und nach den Bedingungen kann es Methoden und Funktionen geben, die von mehr als einem Testskript verwendet werden können. Daher werden diese Methoden in einer Klasse zusammengefasst. Das Testskript kann über das Objekt der allgemeinen Klasse auf diese Methoden zugreifen.
# 2) Excel-Dateien - Die Excel-Dateien gelten als Datenquelle / Datenanbieter für die Ausführung von Testskripten. Diese Dateien speichern die Testdaten in Schlüssel-Wert-Paaren. Beachten Sie, dass wir für jedes Testskript ein separates Excel-Blatt erstellen, d. H. Jedes Testskript verfügt über eine eigene Testdatendatei. Der Name des Testskripts und die entsprechenden Testdatendateien / Excel-Tabellen wurden aus Gründen der Rückverfolgbarkeit beibehalten. Überprüfen Sie das folgende Beispieldatenformat:
Testdatenformat
Jede der Spalten repräsentiert einen Schlüssel und jede der Zeilen repräsentiert Testdaten / -werte. Geben Sie mehrere Zeilen an, um dasselbe Testskript mit mehreren Datensätzen auszuführen.
Markieren Sie, dass die Testdatenformate ausschließlich benutzerdefiniert sind. Auf diese Weise können Sie die Testdatendateien an Ihre Anforderungen anpassen.
# 3) Bibliothek - Der Ordner fungiert als Repository / Artefakt für alle erforderlichen JAR-Dateien, Bibliotheken, Treiber usw., um die Testumgebung erfolgreich zu erstellen und die Testskripte auszuführen. In der folgenden Abbildung sehen Sie sich die Bibliotheken an, die wir in unserem Projekt verwenden würden.
# 4) Protokolle - Der Ordner enthält eine TXT-Datei, in der die Protokollinformationen bei jeder Ausführung gespeichert werden.
# 5) Testmaterial - Der Ordner enthält die tatsächlichen Testdaten, die gegebenenfalls hochgeladen werden müssen. Dieser Ordner wird angezeigt, wenn wir auf Testszenarien stoßen, in denen der Benutzer Dateien, Dokumente, Bilder, Berichte usw. hochladen muss.
# 6) build.xml - Die XML-Datei wird vom „Ant Server“ verwendet, um den gesamten Erstellungsprozess zu automatisieren.
# 7) log4j.xml - Diese XML-Datei wird von einem Java-basierten Dienstprogramm namens 'Log4j' zum Generieren der Ausführungsprotokolle verwendet.
Hinweis : In den kommenden Tutorials werden wir uns eingehender mit den Protokollen, benutzerdefinierten Ausnahmen und Ant befassen. Also keine Panik, wenn Sie zwischen den Begriffen verwechselt werden.
wie man eine jnlp-Datei ausführt
Lassen Sie uns nun im weiteren Verlauf das Phänomen verstehen, bei dem wir auf die Excel-Dateien zugreifen und die Testdaten in unsere Testskripte einfügen.
Um den Prozess einfacher zu verstehen, würden wir den Prozess in die folgenden Schritte unterteilen.
Testdatenerstellung
Schritt 1 :: Der erste und wichtigste Schritt besteht darin, die Testdaten zu erstellen, mit denen wir die Testskripte ausführen würden. Lassen Sie uns unter Berücksichtigung des oben genannten Testdatenformats eine Excel-Datei mit dem Namen „TestScript1“ erstellen. Geben Sie die Werte in den Elementen an.
Schritt 2 :: Der nächste Schritt besteht darin, eine standardmäßige Java-basierte API / Bibliothek mit dem Namen „Java Excel Library“ (jxl) herunterzuladen, um auf die bereits erstellten generischen Methoden für die Excel-Manipulation zugreifen zu können.
Schritt 3 :: Erstellen Sie eine generische Excel-Reader-Klasse mit dem Namen 'ExcelReader.java'. Kopieren Sie den folgenden Code in die Datei ExcelReader.java.
package Utilities; import java.io.File; import java.io.IOException; import java.util.Hashtable; import jxl.Sheet; import jxl.Workbook; import jxl.read.biff.BiffException; /** * This is a utility class created to read the excel test data file before performing the test steps. * This class loads the excel file and * reads its column entries. * */ public class ExcelReader { /** * The worksheet to read in Excel file */ public static Sheet wrksheet; /** * The Excel file to read */ public static Workbook wrkbook = null; /** * Store the column data */ public static Hashtable dict = new Hashtable(); /** * Create a Constructor * * @param ExcelSheetPath * @throws BiffException * @throws WeblivException */ public ExcelReader(String ExcelSheetPath) throws IOException, BiffException { // Initialize try { wrkbook = Workbook.getWorkbook(new File(ExcelSheetPath)); wrksheet = wrkbook.getSheet('Sheet1'); } catch (IOException e) { throw new IOException(); } } /** * Returns the Number of Rows * * @return Rows */ public static int RowCount() { return wrksheet.getRows(); } /** * Returns the Cell value by taking row and Column values as argument * * @param column * @param row * @return Cell contents */ public static String ReadCell(int column, int row) { return wrksheet.getCell(column, row).getContents(); } /** * Create Column Dictionary to hold all the Column Names */ public static void ColumnDictionary() { // Iterate through all the columns in the Excel sheet and store the // value in Hashtable for (int col = 0; col Schritt 4 :: Erstellen Sie eine generische Klasse - 'CommonMethods.java'. Erstellen Sie eine allgemeine Methode innerhalb der Klasse, die die Zellen aus der Excel-Tabelle mit den in ExcelReader.java implementierten Methoden liest.
/** * Read the test data from excel file * * @param data The TestData data object */ public void readExcelData (TestData data) { ArrayList browser = new ArrayList(); ArrayList username = new ArrayList(); ArrayList password = new ArrayList(); ArrayList element1 = new ArrayList(); ArrayList element2 = new ArrayList(); ArrayList element3 = new ArrayList(); // Get the data from excel file for (int rowCnt = 1; rowCnt Schritt 5 :: Erstellen Sie eine neue Java-Klasse mit dem Namen 'TestData.java'. Diese Klasse würde als Getter und Setter für Excel-Daten fungieren. Kopieren Sie den folgenden Code und fügen Sie ihn in die TestData.java-Klasse ein.
package Utilities.dataSetters; import java.util.ArrayList; public class TestData { private ArrayList loginUser = null; private ArrayList password = null; private ArrayList browser = null; private ArrayList element1 = null; private ArrayList element2 = null; private ArrayList element3 = null; /** * @return loginUser */ public ArrayList getLoginUser() { return loginUser; } /** * @param loginUser */ public void setLoginUser(ArrayList loginUser) { this.loginUser = loginUser; } /** * @return password */ public ArrayList getPassword() { return password; } /** * @param password */ public void setPassword(ArrayList password) { this.password = password; } /** * @return browser */ public ArrayList getBrowser() { return browser; } /** * @param browser */ public void setBrowser(ArrayList browser) { this.browser = browser; } /** * @return element1 */ public ArrayList getElement1() { return element1; } /** * @param element1 */ public void setElement1(ArrayList element1) { this.element1 = element1; } /** * @return element2 */ public ArrayList getElement2() { return element2; } /** * @param element2 */ public void setElement2(ArrayList element2) { this.element2 = element2; } /** * @return element3 */ public ArrayList getElement3() { return element3; } /** * @param element3 */ public void setElement3(ArrayList element3) { this.element3 = element3; } }
Schritt 6 :: Der nächste Schritt besteht darin, Instanzen der Java-Klassen 'TestData.java' und 'CommonMethods.java' im Testskript zu erstellen, um auf die Testdaten zuzugreifen und diese zu füllen. Informationen zur Objektinitialisierung, zum Lesen von Excel-Daten und zum Auffüllen der Werte finden Sie im folgenden Codeausschnitt.
// Create Objects public ExcelReader excelReaderObj; CommonMethods commonMethodobj = new CommonMethods(); TestData td = new TestData(); // Load the excel file for testing excelReaderObj = new ExcelReader(Path of the excel); // Load the Excel Sheet Col in to Dictionary for use in test cases excelReaderObj.ColumnDictionary(); // Get the data from excel file commonMethodobj.readExcelData (td); // Populate the username driver.findElement(By.id('idofElement')).sendKeys(data.getLoginUser().get(0));
Daher kann mit der Instanz der Klasse testData.java in Verbindung mit Gettern jeder Testdatenwert innerhalb des Skripts ausgefüllt werden.
Fazit:
Das Tutorial drehte sich hauptsächlich um Begriffe wie Framework-Erstellung und Zugriff auf Testdaten aus den Excel-Dateien. Wir haben Sie anhand eines Beispielprojekts mit der Strategie zur Erstellung von Frameworks vertraut gemacht. Wir haben kurz die verschiedenen Komponenten und Aspekte unseres Frameworks beleuchtet.
Um auf die in der externen Datenquelle gespeicherten Testdaten zugreifen zu können, haben wir eine Java-basierte API - jxl - verwendet. Wir haben auch den Beispielcode zum Lesen und Auffüllen der Excel-Daten in die Testskripte erstellt.
Nächstes Tutorial Nr. 22 :: Im nächsten Tutorial würden wir unser Tutorial auf das stützen Konzepte von Generika und deren Zugänglichkeitsmechanismus . Wir würden einige generische Beispielmethoden erstellen und dann in den Testskripten darauf zugreifen. Wir möchten Ihnen auch das Konzept von Testsuite und die Entwicklung von Beispielcodes vorstellen.
Literatur-Empfehlungen
- Einführung in JUnit Framework und seine Verwendung in Selenium Script - Selenium Tutorial # 11
- Datengesteuertes Framework in Selenium WebDriver mit Apache POI
- Cucumber Selenium Tutorial: Integration von Cucumber Java Selenium WebDriver
- Einführung in Selenium WebDriver - Selenium Tutorial # 8
- Ausführliche Eclipse-Tutorials für Anfänger
- Verwendung des TestNG-Frameworks zum Erstellen von Selenium-Skripten - TestNG Selenium Tutorial # 12
- Effizientes Selenium-Scripting und Fehlerbehebungsszenarien - Selenium-Lernprogramm Nr. 27
- Debuggen von Selenium-Skripten mit Protokollen (Log4j Tutorial) - Selenium Tutorial # 26