keyword driven framework selenium with examples
Aquest tutorial complet sobre el marc basat en paraules clau explica diversos components del marc i com crear-ne un al seleni:
millors eines del sistema per a Windows 10
En general, Framework és un conjunt de pautes que, quan se segueixen, donaran resultats beneficiosos.
El marc basat en paraules clau és una tècnica per externalitzar les paraules clau / accions que s’utilitzen a l’escriptura en un dipòsit d’objectes independent (aquí es tracta d’un fitxer Java Class), que donarà resultats positius com ara una major reutilització del codi, un manteniment reduït de l’escriptura i major portabilitat.
=> Mireu aquí la guia per a principiants de Selenium.
Què aprendreu:
- Què és un marc basat en paraules clau al seleni?
- Components del marc de proves basades en paraules clau
- Conclusió
Què és un marc basat en paraules clau al seleni?
Aquí teniu els videotutorials:
Marc basat en paraules clau: pla i disseny
Creació del marc basat en paraules clau, part I
Creació del Marc basat en paraules clau Part II
Components del marc de proves basades en paraules clau
A continuació es mostra la llista de components que intervenen en el marc basat en paraules clau.
- Biblioteca de funcions
- Full d'Excel per emmagatzemar paraules clau
- Plantilla de cas de prova de disseny
- Dipòsit d'objectes per a elements / localitzadors
- Prova scripts o scripts de controladors
# 1) Biblioteca de funcions
Normalment es tracta d’un fitxer Java Class on es defineixen les paraules clau. En altres paraules, totes les accions que es duen a terme a l'aplicació es defineixen com a mètodes definits per l'usuari (que són paraules clau) al fitxer de classe de biblioteca.
Per exemple:
Suposem que la nostra aplicació ha de realitzar les accions següents en un o més casos de prova:
- Introduïu l'URL.
- Feu clic sobre un element.
- Escriviu un quadre de text.
Aleshores, el fitxer de la biblioteca es crea definint mètodes individuals per a totes aquestes accions, tal com es mostra a continuació:
Aquí, estem creant un mètode definit per l'usuari per a l'acció: 'Introduïu URL'.
El nom proporcionat per al mètode definit per l'usuari s'anomena a Paraula clau.
Per tant, aquí ‘enter_URL’ és la paraula clau
public void enter_URL(WebDriver driver,String TestData) throws IOException { driver.get(TestData); }
Paràmetres :
conductor - El controlador s’inicialitza a la classe principal i es passa aquí.
Dades de prova - La classe principal la llegeix des de la font externa i la passa aquí.
Funció :
Aquí, driver.get () - és la funció de seleni que realitza l'acció 'introdueix URL'.
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) Full d'Excel per emmagatzemar paraules clau
Tots els mètodes definits per l’usuari juntament amb els detalls de la seva funcionalitat s’han d’esmentar al full Excel per tal que l’usuari pugui entendre quina paraula clau conté el fitxer de la biblioteca.
El full Excel fa de resum del fitxer de la biblioteca i es fa útil en crear la plantilla de cas de prova, on l’usuari mira la llista de paraules clau del full Excel i tria la paraula clau corresponent per a cada acció del cas de prova.
Per exemple:
etl tester entrevistes a preguntes i respostes
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) Plantilla de cas de prova de disseny
La plantilla de cas de prova es pot crear segons la conveniència del projecte. No hi ha cap regla particular per crear una plantilla. Està dissenyat en funció de la quantitat que el projecte necessiti del marc per externalitzar. L'externalització pot ser només per a paraules clau o, de vegades, fins i tot les dades de prova i els elements d'interfície d'usuari també s'externalitzen.
Es crea una mostra de plantilla de cas de prova:
En l'exemple donat, la plantilla es crea de manera que:
- Cada full correspon a un cas de prova i l'últim full que conté la 'llista de paraules clau'.
- Cada fila correspon als passos de prova d'un TC.
- Cada columna és el paràmetre necessari per a cada acció.
Com emplenar la plantilla de cas de prova:
# 1) Llegiu des del full de casos de prova proporcionat, llegiu cada cas de prova i els passos de prova corresponents. Per a cada pas de prova, localitzeu l'acció i cerqueu la paraula clau corresponent al fitxer de la biblioteca.
com es reprodueixen objectes flash d’ona de xoc
# 2) Un cop es faci coincidir l'acció amb la paraula clau, empleneu la plantilla de cas de prova a l'ordre de cas de prova i, a més, passeu la resta de paràmetres necessaris.
# 4) Dipòsit d'objectes per a localitzadors
Es pot identificar el localitzador d’interfície d’usuari i es pot esmentar el seu valor a la plantilla de casos de prova o mantenir-lo en un dipòsit d’objectes independent.
A l'exemple següent, les propietats d'identificació d'elements
- Tipus de localitzador - La tècnica d’identificació utilitzada és id, Xpath, ClassName, etc.
- Valor del localitzador - Valor d'aquest atribut - Per exemple: Si té l’atribut Id, el valor de id i així successivament.
Una altra manera és mantenir al Repositori d’objectes i esmentar el nom de l’objecte al full Excel.
- Tipus de localitzador - La tècnica d’identificació utilitzada és id, Xpath, ClassName, etc.
- Nom del localitzador –El nom de l’objecte del repositori d’objectes on s’emmagatzema el valor del localitzador. Per exemple, Si el dipòsit conté el valor Xpath d'un element amb el nom d'objecte com a 'nom d'usuari', el nom de localitzador s'esmenta com a 'nom d'usuari'.
NOTA: Segons el LocatorType esmentat al full Excel, el seu valor s'hauria d'emmagatzemar al Repositori d'objectes. Per exemple: Si s’especifica Xpath com a LocatorType, el dipòsit hauria d’emmagatzemar Xpath d’aquest element, si l’identificador s’especifica com a Locatortype, s’hauria d’emmagatzemar l’identificador, etc.
# 5) Prova de scripts o scripts de controladors
Aquest és el guió principal que llegeix tots els continguts del full Excel i realitza l’acció corresponent. El guió està dissenyat en funció de com es crea la plantilla.
En el nostre cas, com que cada full de prova actua com a cas de prova i cada fila com a pas de prova, es pot crear l'script del controlador iterant a través de fulls i files.
A cada fila en particular, es llegeix una paraula clau i s’executa el mètode corresponent al fitxer de biblioteca, etc. Això continua fins que s'executin tots els passos de prova del cas de prova. A continuació, es passa al següent cas / full de prova i l'executa.
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;testcaseConclusió
Per tant, un cop creat un framework, es pot tornar a utilitzar per a diversos casos / projectes de prova. D'aquesta manera, redueix les hores laborals de creació d'un script d'automatització per a cada projecte.
En el següent capítol, parlarem de la creació del marc basat en híbrids, que és una combinació del marc basat en paraules clau i el marc basat en dades.
=> Llegiu la sèrie d'entrenament Easy Selenium.
Lectura recomanada
- Marc basat en dades a Selenium WebDriver mitjançant Apache POI
- Com funcionen les proves impulsades per dades (exemples de QTP i seleni)
- Introducció a JUnit Framework i el seu ús a Selenium Script - Selenium Tutorial # 11
- Què és el marc híbrid al seleni?
- Tutorial Selenium Find Element By Text amb exemples
- 30+ millors tutorials sobre seleni: apreneu el seleni amb exemples reals
- Creació de Selenium Framework i accés a les dades de proves des d'Excel: tutorial núm. 21 de Selenium
- Paraula clau 'aquesta' de Java: tutorial amb exemples de codi