keyword driven framework selenium with examples
Denna omfattande handledning om nyckelorddriven ram förklarar olika komponenter i ramverket och hur man skapar en i selen:
I allmänhet är Framework en uppsättning riktlinjer som, när de följs, ger fördelaktiga resultat.
Det nyckelordsdrivna ramverket är en teknik för att externa nyckelord / åtgärder som används i skriptet i ett separat Object Repository (här är det en Java Class-fil), vilket ger positiva resultat som ökad kodåteranvändbarhet, minskat skriptunderhåll, och högre bärbarhet.
=> Ta en titt på Selenium Beginners Guide här.
Vad du kommer att lära dig:
Vad är ett nyckelorddrivet ramverk i selen?
Här är videotutorialerna:
Keyword Driven Framework - Plan & Design
Skapande av nyckelordsdriven ramdel - I
Skapande av nyckelordsdriven ramdel - II
Komponenter i nyckelordsdrivna testramverk
Nedan följer listan över komponenter som är involverade i Keyword Driven Framework.
- Funktionsbibliotek
- Excel-ark för att lagra nyckelord
- Mall för designtestfall
- Objektförvar för element / lokaliserare
- Testskript eller drivrutinsskript
# 1) Funktionsbibliotek
Detta är vanligtvis en Java-klassfil där nyckelorden definieras. Med andra ord, alla åtgärder som utförs på applikationen definieras som användardefinierade metoder (som är nyckelord) i biblioteksklassfilen.
Till exempel:
Låt oss anta att vår ansökan måste utföra följande åtgärder i ett eller flera testfall:
- Ange webbadressen.
- Klicka på ett element.
- Skriv in en textruta.
Sedan, biblioteksfilen skapas genom att definiera enskilda metoder för alla dessa åtgärder enligt nedan:
Här skapar vi en användardefinierad metod för åtgärden - ”Ange URL”.
Namnet för den användardefinierade metoden kallas a Nyckelord.
Så här är 'enter_URL' nyckelordet
public void enter_URL(WebDriver driver,String TestData) throws IOException { driver.get(TestData); }
Parametrar :
förare - Föraren initialiseras i huvudklassen och skickas in här.
TestData - läses från den externa källan av huvudklassen och skickas in här.
Fungera :
Här, driver.get () - är funktionen för Selen som utför åtgärden ”ange URL”.
Nyckelord. 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-ark för att lagra nyckelord
Alla användardefinierade metoder tillsammans med dess funktionsdetaljer bör nämnas i excel-bladet så att användaren kan förstå vilket nyckelord biblioteksfilen innehåller.
Excel-ark fungerar som en sammanfattning för biblioteksfilen och blir användbar när man skapar testfallsmallen, där användaren tittar på excel-arkets nyckelordslista och väljer motsvarande nyckelord för varje åtgärd i testfallet.
Till exempel:
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) Designtestmall
Testfallsmall kan skapas enligt projektets bekvämlighet. Det finns ingen särskild regel för att skapa en mall. Den är utformad beroende på hur mycket projektet behöver ramverket för att externiseras. Externaliseringen kan endast vara för nyckelord, eller ibland kan även testdata och användargränssnittselement externa.
Ett exempel på en testfallsmall skapas:
I det givna exemplet skapas mallen på ett sådant sätt att:
- Varje ark motsvarar ett testfall och det sista arket är det som innehåller 'Nyckelordslistan'.
- Varje rad motsvarar teststegen för en TC.
- Varje kolumn är de parametrar som är nödvändiga för varje åtgärd.
Så här fyller du i testfallsmallen:
# 1) Från det medföljande testfallet läser du varje testfall och dess motsvarande teststeg. För varje teststeg, leta reda på åtgärden och hitta motsvarande nyckelord från biblioteksfilen.
#två) När åtgärden har matchats med nyckelordet, fyll i testfallsmallen i testfallets ordning och skicka även de andra nödvändiga parametrarna efter behov.
# 4) Objektförvar för lokaliserare
UI-lokaliserare kan identifieras och dess värde kan antingen nämnas i testfallsmallen eller bibehållas i ett separat Object Repository.
I exemplet nedan, elementidentifieringsegenskaperna
- Locator Type - Identifieringstekniken som används är id, Xpath, ClassName, etc.
- Locator Värde - Attributets värde - Till exempel: Om dess Id-attribut, då värdet av id och så vidare.
Ett annat sätt är att behålla i Objektförvaret och nämna objektnamnet i Excel-arket.
- Locator Type - Identifieringstekniken som används är id, Xpath, ClassName, etc.
- Sökarens namn –Namnet på objektet från objektförvaret där lokaliseringsvärdet lagras. Till exempel, Om förvaret innehåller Xpath-värdet för ett element med ObjectName som 'Användarnamn', nämns LocatorName som 'UserName'.
NOTERA: Enligt LocatorType som nämns i excel-arket ska dess värde lagras i Object Repository. Till exempel: Om Xpath anges som LocatorType ska förvaret lagra Xpath för det elementet, om id: t anges som Locatortype, ska id lagras och så vidare.
# 5) Testskript eller drivrutinsskript
Detta är huvudskriptet som läser hela innehållet i excel-arket och utför motsvarande åtgärd. Skriptet är utformat baserat på hur mallen skapas.
I vårt fall, eftersom varje testark fungerar som ett testfall och varje rad som ett teststeg, kan drivrutinsskriptet skapas genom att itera över ark och sedan rader.
hur man öppnar något med java
I varje enskild rad läses ett nyckelord och motsvarande metod i biblioteksfilen körs och så vidare. Detta fortsätter tills alla teststegen i testfallet utförs. Sedan fortsätter det till nästa testfall / ark och kör det.
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;testcaseSlutsats
Så snart en ram skapats kan den återanvändas för flera testfall / projekt. På detta sätt minskar det arbetstiden för att skapa ett automatiseringsskript för varje projekt.
I nästa kapitel kommer vi att diskutera skapandet av ett hybriddrivet ramverk som är en kombination av det nyckelordsdrivna ramverket och det datadrivna ramverket.
=> Läs igenom The Easy Selenium Training Series.
Rekommenderad läsning
- Datadriven ramverk i Selen WebDriver med hjälp av Apache POI
- Hur datadriven testning fungerar (exempel på QTP och selen)
- Introduktion till JUnit Framework and Its Use in Selenium Script - Selenium Tutorial # 11
- Vad är hybridramen i selen?
- Selen Find Element by Text Tutorial med exempel
- 30+ bästa selen-självstudier: Lär dig selen med riktiga exempel
- Selen Framework Creation and Accessing Test Data from Excel - Selenium Tutorial # 21
- Java 'detta' Nyckelord: Handledning med kodexempel