keyword driven framework selenium with examples
Denne omfattende veiledningen om søkeorddrevet rammeverk forklarer forskjellige komponenter i rammeverket og hvordan du lager en i selen:
Generelt er Framework et sett med retningslinjer, som når de følges vil gi gunstige resultater.
Det nøkkelorddrevne rammeverket er en teknikk for å eksternalisere nøkkelord / handlinger som brukes i skriptet i et eget Object Repository (her er det en Java Class-fil), som vil gi positive resultater som økt kode-gjenbrukbarhet, redusert skriptvedlikehold, og høyere bærbarhet.
=> Ta en titt på Selenium Beginners Guide her.
Hva du vil lære:
Hva er et nøkkelorddrevet rammeverk i selen?
Her er videoopplæringen:
Keyword Driven Framework - Plan & Design
Opprettelse av Keyword Driven Framework Part - I
Opprettelse av søkeorddrevet rammeverk - II
Komponenter av søkeorddrevet testramme
Nedenfor er listen over komponenter som er involvert i Keyword Driven Framework.
- Funksjonsbibliotek
- Excel-ark for å lagre nøkkelord
- Design Test Case Mal
- Objektregister for elementer / lokatorer
- Test skript eller driverskript
# 1) Funksjonsbibliotek
Dette er vanligvis en Java Class-fil der nøkkelordene er definert. Med andre ord er alle handlingene som utføres på applikasjonen definert som brukerdefinerte metoder (som er nøkkelord) i bibliotekets klassefil.
For eksempel:
La oss anta at søknaden vår må utføre følgende handlinger i en eller flere testsaker:
- Skriv inn URL-en.
- Klikk på et element.
- Skriv inn en tekstboks.
Deretter, bibliotekfilen opprettes ved å definere individuelle metoder for alle disse handlingene som vist nedenfor:
Her lager vi en brukerdefinert metode for handlingen - ‘Enter URL’.
Navnet som oppgis for den brukerdefinerte metoden kalles a Nøkkelord.
Så her er ‘enter_URL’ nøkkelordet
public void enter_URL(WebDriver driver,String TestData) throws IOException { driver.get(TestData); }
Parametere :
sjåfør - Føreren er initialisert i hovedklassen og sendes inn her.
Testdata - blir lest fra den eksterne kilden av hovedklassen og gitt den inn her.
som ikke er et eksempel på data mining?
Funksjon :
Her, driver.get () - er funksjonen til Selen som utfører handlingen ‘enter URL’.
Nøkkelord. 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 for å lagre nøkkelord
Alle brukerdefinerte metoder sammen med funksjonalitetsdetaljer bør nevnes i excel-arket slik at brukeren kan forstå hvilket nøkkelord biblioteksfilen inneholder.
Excel-ark fungerer som et sammendrag for biblioteksfilen og blir nyttig når du oppretter testsaksmalen, der brukeren ser på excel-arkets nøkkelordliste og velger det tilsvarende nøkkelordet for hver handling i testsaken.
For eksempel:
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 Mal
Test Case Template kan opprettes i henhold til prosjektets bekvemmelighet. Det er ingen spesiell regel for å lage en mal. Den er designet avhengig av hvor mye prosjektet trenger rammeverket for å eksternalisere. Eksternaliseringen kan bare være for søkeord, eller noen ganger er til og med testdata og brukergrensesnittelementer eksternalisert.
En eksempelmal for testtilfelle opprettes:
I det gitte eksemplet er malen opprettet på en slik måte at:
- Hvert ark tilsvarer en testtilfelle, og det siste arket er det som inneholder ‘Nøkkelordlisten’.
- Hver rad tilsvarer teststrinnene til en TC.
- Hver kolonne er parameterne som er nødvendige for hver handling.
Slik fyller du ut testsaksmalen:
#1) Fra det medfølgende testarket, les hver testkasse og tilhørende teststrinn. For hvert testtrinn, finn handlingen og finn det tilsvarende nøkkelordet fra biblioteksfilen.
#to) Når handlingen er matchet med nøkkelordet, fyller du ut testsaksmalen i testsaksrekkefølgen og sender også de andre nødvendige parametrene etter behov.
# 4) Objektregister for lokaliseringer
UI locator kan identifiseres, og verdien kan enten nevnes i testsaksmalen eller opprettholdes i et eget Object Repository.
I eksemplet nedenfor, elementidentifikasjonsegenskapene
- Locator Type - Identifikasjonsteknikken som brukes er id, Xpath, ClassName, etc.
- Locator Verdi - Verdien av det attributtet - For eksempel: Hvis ID-attributtet, så verdien av id og så videre.
En annen måte er å opprettholde i Object Repository og nevne objektnavnet i Excel-arket.
- Locator Type - Identifikasjonsteknikken som brukes er id, Xpath, ClassName, etc.
- Locator Navn –Navnet på objektet fra objektregisteret der lokaliseringsverdien er lagret. For eksempel, Hvis depotet har Xpath-verdien til et element med ObjectName som 'Brukernavn', blir LocatorName nevnt som 'UserName'.
MERK: I henhold til LocatorType nevnt i excel-arket, bør verdien lagres i Object Repository. For eksempel: Hvis Xpath er spesifisert som LocatorType, skal depotet lagre Xpath for det elementet. Hvis id er spesifisert som Locatortype, skal id lagres og så videre.
hvordan åpne dat-fil på iPhone
# 5) Testskript eller driverskript
Dette er hovedskriptet som leser alt innholdet i excel-arket og utfører den tilsvarende handlingen. Skriptet er designet basert på hvordan malen er opprettet.
I vårt tilfelle, da hvert testark fungerer som en testtilfelle og hver rad som et teststrinn, kan driverskriptet opprettes ved å iterere på tvers av ark og deretter rader.
I hver spesielle rad blir et nøkkelord lest og den tilsvarende metoden i biblioteksfilen utført og så videre. Dette fortsetter til alle teststrinnene i testsaken er utført. Deretter fortsetter den til neste testsak / ark og utfører den.
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;testcaseKonklusjon
Så snart et rammeverk er opprettet, kan det brukes på nytt for flere testsaker / prosjekter. På denne måten reduserer det arbeidstiden for å lage et automatiseringsskript for hvert prosjekt.
I neste kapittel vil vi diskutere etableringen av det hybriddrevne rammeverket som er en kombinasjon av det nøkkelorddrevne rammeverket og det datadrevne rammeverket.
=> Les gjennom Easy Selenium Training Series.
Anbefalt lesing
- Datadrevet rammeverk i Selenium WebDriver ved hjelp av Apache POI
- Hvordan datadrevet testing fungerer (eksempler på QTP og selen)
- Introduksjon til JUnit Framework and Its Usage in Selenium Script - Selenium Tutorial # 11
- Hva er hybrid ramme i selen?
- Selen Find Element By Text Tutorial med eksempler
- 30+ beste selenopplæringsprogrammer: Lær selen med virkelige eksempler
- Selen Framework Creation and Accessing Test Data from Excel - Selenium Tutorial # 21
- Java 'dette' nøkkelord: Opplæring med kodeeksempler