keyword driven framework selenium with examples
Denne omfattende vejledning om søgeordsdrevet ramme forklarer forskellige komponenter i rammen og hvordan man opretter en i selen:
Generelt er Framework et sæt retningslinjer, som når de følges vil give gavnlige resultater.
Den nøgleordsdrevne ramme er en teknik til eksternalisering af nøgleord / handlinger, der bruges i scriptet i et separat Object Repository (her er det en Java Class-fil), som vil give positive resultater som øget genanvendelighed af kode, reduceret scriptvedligeholdelse, og højere bærbarhed.
=> Se på Selenium Beginners Guide her.
Hvad du lærer:
Hvad er en nøgleordsdrevet ramme i selen?
Her er videovejledningerne:
Keyword Driven Framework - Plan & Design
Oprettelse af nøgleordsdrevet rammedel - I
sæbeinterviewspørgsmål og svar til erfarne
Oprettelse af søgeordsdrevet rammedel - II
Komponenter i søgeordsdrevet testramme
Nedenfor er listen over komponenter, der er involveret i Keyword Driven Framework.
- Funktionsbibliotek
- Excel-ark til opbevaring af nøgleord
- Design test sag skabelon
- Objektlager for elementer / lokaliseringer
- Test scripts eller Driver Script
# 1) Funktionsbibliotek
Dette er normalt en Java Class-fil, hvor nøgleordene er defineret. Med andre ord er alle de handlinger, der udføres på applikationen, defineret som brugerdefinerede metoder (som er nøgleord) i biblioteksklassefilen.
For eksempel:
Lad os antage, at vores ansøgning skal udføre følgende handlinger i en eller flere testsager:
- Indtast URL'en.
- Klik på et element.
- Indtast en tekstboks.
Derefter, biblioteksfilen oprettes ved at definere individuelle metoder til alle disse handlinger som vist nedenfor:
Her opretter vi en brugerdefineret metode til handlingen - 'Indtast URL'.
Navnet til den brugerdefinerede metode kaldes a Nøgleord.
Så her er 'enter_URL' nøgleordet
public void enter_URL(WebDriver driver,String TestData) throws IOException { driver.get(TestData); }
Parametre :
chauffør - Føreren initialiseres i hovedklassen og sendes ind her.
TestData - læses fra den eksterne kilde af hovedklassen og sendte den ind her.
Fungere :
Her, driver.get () - er funktionen af Selen, der udfører handlingen 'indtast URL'.
Nøgleord. 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 til opbevaring af nøgleord
Alle brugerdefinerede metoder sammen med dens funktionalitetsdetaljer bør nævnes i excel-arket, så brugeren kan forstå, hvilket nøgleord biblioteksfilen indeholder.
Excel-ark fungerer som et resumé for biblioteksfilen og bliver nyttigt under oprettelsen af testcase-skabelonen, hvor brugeren ser på excel-ark-nøgleordslisten og vælger det tilsvarende nøgleord for hver handling i test-sagen.
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) Skabelon til designtestsag
Test Case Template kan oprettes i henhold til projektets bekvemmelighed. Der er ingen særlig regel for at oprette en skabelon. Det er designet afhængigt af hvor meget projektet har brug for rammen for at eksternalisere. Eksternaliseringen er muligvis kun til nøgleord, eller nogle gange endda testdata og UI-elementer eksternaliseres også.
sql forespørgsler til praksis med svar pdf
En prøve test case skabelon oprettes:
I det givne eksempel oprettes skabelonen på en sådan måde, at:
- Hvert ark svarer til en testsag, og det sidste ark er det, der indeholder 'Nøgleordslisten'.
- Hver række svarer til testtrinene i en TC.
- Hver kolonne er de parametre, der er nødvendige for hver handling.
Sådan udfyldes testskabelonen:
# 1) På det medfølgende testcasesark skal du læse hver testcase og dens tilsvarende testtrin. For hvert testtrin skal du finde handlingen og finde det tilsvarende nøgleord fra biblioteksfilen.
#to) Når handlingen er matchet med nøgleordet, skal du udfylde test case skabelonen i test case rækkefølgen og også videregive de andre nødvendige parametre efter behov.
# 4) Objektopbevaring til lokaliseringer
UI locator kan identificeres, og dens værdi kan enten nævnes i test case-skabelonen eller opretholdes i et separat Object Repository.
I nedenstående eksempel er elementets identifikationsegenskaber
- Locator Type - Den anvendte identifikationsteknik er id, Xpath, ClassName osv.
- Locator værdi - Værdien af denne attribut - For eksempel: Hvis dens id-attribut, så værdien af id og så videre.
En anden måde er at vedligeholde i objektlageret og nævne objektnavnet i Excel-arket.
- Locator Type - Den anvendte identifikationsteknik er id, Xpath, ClassName osv.
- Locator Navn –Navnet på objektet fra det objektlager, hvor lokaliseringsværdien er gemt. For eksempel, Hvis arkivet har Xpath-værdien for et element med ObjectName som 'Brugernavn', nævnes LocatorName som 'UserName'.
BEMÆRK: I henhold til LocatorType, der er nævnt i excel-arket, skal dens værdi gemmes i Object Repository. For eksempel: Hvis Xpath er angivet som LocatorType, skal lageret gemme Xpath for dette element, hvis id'et er angivet som Locatortype, skal id'et gemmes og så videre.
# 5) Testskripter eller driverscript
Dette er det vigtigste script, der læser hele indholdet af excel-arket og udfører den tilsvarende handling. Scriptet er designet ud fra, hvordan skabelonen oprettes.
I vores tilfælde, da hvert testark fungerer som en testcase og hver række som et teststrin, kan driverscriptet oprettes ved at gentage det på tværs af ark og derefter rækker.
I hver bestemt række læses et nøgleord, og dets tilsvarende metode i biblioteksfilen udføres og så videre. Dette fortsætter, indtil alle testtrin i testsagen er udført. Derefter fortsætter det til næste testtilfælde / ark og udfører 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;testcaseKonklusion
Når en ramme er oprettet, kan den således genbruges til flere testcases / -projekter. På denne måde reducerer det arbejdstiden ved oprettelse af et automatiseringsscript til hvert projekt.
I det næste kapitel vil vi diskutere oprettelsen af den hybriddrevne ramme, som er en kombination af den nøgleordsdrevne ramme og den datadrevne ramme.
=> Læs igennem Easy Selenium Training Series.
Anbefalet læsning
- Datadrevet ramme i Selenium WebDriver ved hjælp af Apache POI
- Sådan fungerer datadrevet test (eksempler på QTP og selen)
- Introduktion til JUnit Framework og dens anvendelse i Selenium Script - Selen Tutorial # 11
- Hvad er hybrid ramme i selen?
- Selen Find Element By Text Tutorial med eksempler
- 30+ bedste selen-tutorials: Lær selen med rigtige eksempler
- Selen Framework Oprettelse og adgang til testdata fra Excel - Selenium Tutorial # 21
- Java 'dette' Nøgleord: Vejledning med kodeeksempler