keyword driven framework selenium with examples
In diesem umfassenden Tutorial zum Keyword-gesteuerten Framework werden verschiedene Komponenten des Frameworks und das Erstellen einer solchen in Selen erläutert:
SQL-Fragen Interview Fragen und Antworten für Erstsemester
Im Allgemeinen handelt es sich bei Framework um eine Reihe von Richtlinien, deren Einhaltung zu vorteilhaften Ergebnissen führt.
Das schlüsselwortgesteuerte Framework ist eine Technik zum Externalisieren von Schlüsselwörtern / Aktionen, die im Skript in einem separaten Objekt-Repository verwendet werden (hier handelt es sich um eine Java-Klassendatei). Dies führt zu positiven Ergebnissen wie einer verbesserten Wiederverwendbarkeit des Codes und einer geringeren Skriptwartung. und höhere Portabilität.
=> Schauen Sie sich hier den Selenium Beginners Guide an.
Was du lernen wirst:
- Was ist ein schlüsselwortgesteuertes Framework in Selen?
- Komponenten des Keyword Driven Testing Framework
- Fazit
Was ist ein schlüsselwortgesteuertes Framework in Selen?
Hier sind die Video-Tutorials:
Keyword Driven Framework - Plan & Design
Erstellung eines schlüsselwortgesteuerten Frameworks Teil - I.
Erstellung eines schlüsselwortgesteuerten Frameworks Teil - II
Komponenten des Keyword Driven Testing Framework
Im Folgenden finden Sie eine Liste der Komponenten, die am Keyword Driven Framework beteiligt sind.
- Funktionsbibliothek
- Excel-Tabelle zum Speichern von Schlüsselwörtern
- Entwurfstestfallvorlage
- Objekt-Repository für Elemente / Locators
- Testskripte oder Treiberskripte
# 1) Funktionsbibliothek
Dies ist normalerweise eine Java-Klassendatei, in der die Schlüsselwörter definiert sind. Mit anderen Worten, alle Aktionen, die für die Anwendung ausgeführt werden, werden in der Bibliotheksklassendatei als benutzerdefinierte Methoden (Schlüsselwörter) definiert.
Zum Beispiel:
Nehmen wir an, dass unsere Anwendung in einem oder mehreren Testfällen die folgenden Aktionen ausführen muss:
- Geben Sie die URL ein.
- Klicken Sie auf ein Element.
- Geben Sie ein Textfeld ein.
Dann, Die Bibliotheksdatei wird erstellt, indem einzelne Methoden für alle diese Aktionen wie folgt definiert werden:
Hier erstellen wir eine benutzerdefinierte Methode für die Aktion 'URL eingeben'.
Der für die benutzerdefinierte Methode angegebene Name heißt a Stichwort.
Hier ist also 'enter_URL' das Schlüsselwort
public void enter_URL(WebDriver driver,String TestData) throws IOException { driver.get(TestData); }
Parameter ::
Treiber - Der Treiber wird in der Hauptklasse initialisiert und hier übergeben.
Testdaten - wird von der Hauptklasse aus der externen Quelle gelesen und hier übergeben.
Funktion ::
Hier, driver.get () - ist die Funktion von Selen, die die Aktion 'URL eingeben' ausführt.
Keywords.java
package Keywords.Defined; import java.io.File; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; public class Keywords { String path = System.getProperty('user.dir'); WebDriver driver; // driver object is declared //method for entering URL – Keyword is ‘enter_URL’ public void enter_URL(WebDriver driver,String TestData) throws IOException { driver.get(TestData); } //method for typing action – Keyword is ‘type’ public void type(WebDriver driver, String ObjectName, String locatorType, String testdata) { driver.findElement(this.getObject(ObjectName,locatorType)).sendKeys(testdata); } //method for click action – Keyword is ‘click’ public void click(WebDriver driver,String ObjectName, String locatorType) { driver.findElement(this.getObject(ObjectName,locatorType)).click(); } }
# 2) Excel-Tabelle zum Speichern von Schlüsselwörtern
Alle benutzerdefinierten Methoden sowie ihre Funktionsdetails sollten in der Excel-Tabelle angegeben werden, damit der Benutzer verstehen kann, welches Schlüsselwort die Bibliotheksdatei enthält.
Die Excel-Tabelle dient als Zusammenfassung für die Bibliotheksdatei und ist nützlich beim Erstellen der Testfallvorlage, bei der der Benutzer die Excel-Blatt-Schlüsselwortliste betrachtet und das entsprechende Schlüsselwort für jede Aktion im Testfall auswählt.
Zum Beispiel:
doppelt verknüpfte Listenimplementierung c ++
package Keywords.Defined; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.Properties; import java.util.concurrent.TimeUnit; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.support.ui.ExpectedConditions; import org.openqa.selenium.support.ui.WebDriverWait; public class Keywords { String path = System.getProperty('user.dir'); WebDriver driver; public void enter_URL(WebDriver driver,String TestData) throws IOException{ driver.get(TestData); } public void type(WebDriver driver, String ObjectName, String locatorType, String testdata) throws IOException{ driver.findElement(this.getObject(ObjectName,locatorType)).sendKeys(testdata); //driver.findElement(By.xpath('//')).sendKeys(testdata); } public void wait(WebDriver driver,String ObjectName, String locatorType) throws IOException{ WebDriverWait wait = new WebDriverWait(driver, 60); wait.until(ExpectedConditions.visibilityOf(driver.findElement(this.getObject(ObjectName,locatorType)))); } public void click(WebDriver driver,String ObjectName, String locatorType) throws IOException{ driver.findElement(this.getObject(ObjectName,locatorType)).click(); } public String get_currentURL(WebDriver driver){ String URL = driver.getCurrentUrl(); System.out.println('print URL '+URL); return URL; } By getObject(String ObjectName, String locatorType) throws IOException{ File file = new File(path+'\Externals\Object Repository.properties'); FileInputStream fileInput = new FileInputStream(file); Properties prop = new Properties(); //find by xpath if(locatorType.equalsIgnoreCase('XPATH')){ return By.xpath(prop.getProperty(ObjectName)); } //find by class else if(locatorType.equalsIgnoreCase('CLASSNAME')){ return By.className(prop.getProperty(ObjectName)); } //find by name else if(locatorType.equalsIgnoreCase('NAME')){ return By.name(prop.getProperty(ObjectName)); } //Find by css else if(locatorType.equalsIgnoreCase('CSS')){ return By.cssSelector(prop.getProperty(ObjectName)); } //find by link else if(locatorType.equalsIgnoreCase('LINK')){ return By.linkText(prop.getProperty(ObjectName)); } //find by partial link else if(locatorType.equalsIgnoreCase('PARTIALLINK')){ return By.partialLinkText(prop.getProperty(ObjectName)); } return null; } }
# 3) Design Test Case Template
Die Testfallvorlage kann je nach Projektkomfort erstellt werden. Es gibt keine bestimmte Regel zum Erstellen einer Vorlage. Es hängt davon ab, inwieweit das Projekt den Rahmen für die Externalisierung benötigt. Die Externalisierung erfolgt möglicherweise nur für Schlüsselwörter, oder manchmal werden auch Testdaten und Benutzeroberflächenelemente externalisiert.
Eine Beispiel-Testfallvorlage wird erstellt:
Im angegebenen Beispiel wird die Vorlage folgendermaßen erstellt:
- Jedes Blatt entspricht einem Testfall und das letzte Blatt enthält die Liste der Schlüsselwörter.
- Jede Zeile entspricht den Testschritten eines TC.
- Jede Spalte enthält die Parameter, die für jede Aktion erforderlich sind.
So füllen Sie die Testfallvorlage aus:
# 1) Lesen Sie auf dem bereitgestellten Testfallblatt jeden Testfall und die entsprechenden Testschritte. Suchen Sie für jeden Testschritt die Aktion und suchen Sie das entsprechende Schlüsselwort aus der Bibliotheksdatei.
Selen Interview Fragen und Antworten für erfahrene
#zwei) Wenn die Aktion mit dem Schlüsselwort übereinstimmt, füllen Sie die Testfallvorlage in der Testfallreihenfolge aus und übergeben Sie bei Bedarf auch die anderen erforderlichen Parameter.
# 4) Objekt-Repository für Locators
Der UI-Locator kann identifiziert und sein Wert kann entweder in der Testfallvorlage angegeben oder in einem separaten Objekt-Repository verwaltet werden.
Im folgenden Beispiel die Eigenschaften der Elementidentifikation
- Ortungstyp - Die verwendete Identifikationstechnik ist id, Xpath, ClassName usw.
- Locator-Wert - Wert dieses Attributs - Zum Beispiel: Wenn sein ID-Attribut, dann der Wert von id und so weiter.
Eine andere Möglichkeit besteht darin, im Objekt-Repository zu pflegen und den Objektnamen in der Excel-Tabelle anzugeben.
- Ortungstyp - Die verwendete Identifikationstechnik ist id, Xpath, ClassName usw.
- Locator Name –Der Name des Objekts aus dem Objekt-Repository, in dem der Locator-Wert gespeichert ist. Zum Beispiel, Wenn das Repository den Xpath-Wert eines Elements mit dem Objektnamen als 'Benutzername' enthält, wird der LocatorName als 'Benutzername' bezeichnet.
HINWEIS: Entsprechend dem in der Excel-Tabelle genannten LocatorType sollte sein Wert im Objekt-Repository gespeichert werden. Zum Beispiel: Wenn Xpath als LocatorType angegeben ist, sollte das Repository Xpath dieses Elements speichern. Wenn die ID als Locatortype angegeben ist, sollte die ID gespeichert werden und so weiter.
# 5) Testskripte oder Treiberskripte
Dies ist das Hauptskript, das den gesamten Inhalt der Excel-Tabelle liest und die entsprechende Aktion ausführt. Das Skript basiert auf der Erstellung der Vorlage.
In unserem Fall kann das Treiberskript erstellt werden, da jedes Testblatt als Testfall und jede Zeile als Testschritt fungiert, indem über Blätter und dann Zeilen iteriert wird.
In jeder bestimmten Zeile wird ein Schlüsselwort gelesen und die entsprechende Methode in der Bibliotheksdatei ausgeführt usw. Dies wird fortgesetzt, bis alle Testschritte im Testfall ausgeführt sind. Dann geht es weiter zum nächsten Testfall / Blatt und führt es aus.
package Automation.KeywordFramework; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.util.LinkedList; import java.util.Properties; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.openqa.selenium.firefox.FirefoxDriver; import org.openqa.selenium.ie.InternetExplorerDriver; import org.openqa.selenium.support.ui.WebDriverWait; import org.testng.Reporter; import org.testng.annotations.BeforeTest; import org.testng.annotations.Parameters; import org.testng.annotations.Test; import org.testng.asserts.Assertion; import Keywords.Defined.Assertions; import Keywords.Defined.Keywords; public class IrctcLogic { WebDriver driver; String path = System.getProperty('user.dir'); Keywords keyword = new Keywords(); Assertions assertion = new Assertions(); @Test public void readExcelandexecute() throws IOException, InterruptedException{ //From excelfile String excelFilePath = path+'\Externals\Test Cases.xlsx'; FileInputStream fileInputStream = new FileInputStream(excelFilePath); XSSFWorkbook workbook = new XSSFWorkbook(fileInputStream); int testcasescount = workbook.getNumberOfSheets()-1; System.out.println('Total test cases :'+testcasescount); for (int testcase=0;testcaseFazit
Sobald ein Framework erstellt wurde, kann es für mehrere Testfälle / Projekte wiederverwendet werden. Auf diese Weise wird die Arbeitszeit für die Erstellung eines Automatisierungsskripts für jedes Projekt reduziert.
Im nächsten Kapitel werden wir die Erstellung des Hybrid-gesteuerten Frameworks diskutieren, das eine Kombination aus dem Keyword-gesteuerten Framework und dem datengesteuerten Framework ist.
=> Lesen Sie die Easy Selenium Training Series durch.
Literatur-Empfehlungen
- Datengesteuertes Framework in Selenium WebDriver mit Apache POI
- Funktionsweise datengesteuerter Tests (Beispiele für QTP und Selen)
- Einführung in JUnit Framework und seine Verwendung in Selenium Script - Selenium Tutorial # 11
- Was ist ein Hybridgerüst in Selen?
- Selenium Find Element By Text Tutorial mit Beispielen
- 30+ beste Selen-Tutorials: Lernen Sie Selen anhand realer Beispiele
- Selenium Framework Erstellung und Zugriff auf Testdaten aus Excel - Selenium Tutorial # 21
- Java 'this' Schlüsselwort: Tutorial mit Codebeispielen