Construint un marc basat en dades, basat en paraules clau i seleni híbrid



Aquest bloc explica què és un marc Selenium, els seus avantatges i com implementar marcs basats en dades, basats en paraules clau i híbrids en seleni.

L'anterior en aquesta sèrie us han donat exposició a conceptes bàsics en proves de seleni.Tanmateix, en aquest bloc, us explicaré com utilitzar un marc Selenium per optimitzar l’estructura del vostre codi i això us acostarà a convertir-vos en un .

Què és un marc Selenium?

Selenium Framework és una estructura de codi per facilitar el manteniment del codi i millorar la llegibilitat del codi. Un marc implica dividir tot el codi en trossos de codi més petits, que posen a prova una funcionalitat concreta.





El codi està estructurat de manera que, el 'conjunt de dades' se separa del 'cas de prova' real, que provarà la funcionalitat de l'aplicació web. També es pot estructurar de manera que els casos de prova que cal executar s’anomenin (invocin) des d’una aplicació externa (com un .csv).

Hi ha una sèrie de marcs, però hi ha 3 marcs de seleni que s’utilitzen habitualment:



Aquests marcs es discutiran amb una demostració en aquest bloc. Abans d’anar més enllà, permeteu-me que us expliqui per què s’ha d’instal·lar un marc Selenium i quins beneficis obtindreu d’utilitzar-los.

què s'afegeix a Java

Per què necessitem un marc Selenium?

Sense un marc establert, hi haurà un cas de prova que inclourà tota la funcionalitat de la prova. El més aterrador és que aquest cas de prova únic té la capacitat d’arribar fins a un milió de línies de codi. Per tant, és bastant obvi que un cas de prova tan enorme serà difícil de llegir. Fins i tot si voleu modificar qualsevol funcionalitat més endavant, us costarà molt modificar el codi.

Atès que la implementació d’un framework donarà lloc a peces de codi més petites però múltiples, hi ha diversos avantatges.



Avantatges del marc Selenium

  • Augment de la reutilització del codi
  • Millora de la llegibilitat del codi
  • Major portabilitat
  • Guió reduïtmanteniment

Ara que ja coneixeu els conceptes bàsics dels frameworks, permeteu-me explicar-los detalladament.

Marc basat en dades

Un marc basat en dades a Selenium és la tècnica per separar el 'conjunt de dades' del 'cas de prova' (codi) real. Aquest marc depèn completament de les dades de prova d’entrada. Les dades de prova s’alimenten de fonts externes com ara un fitxer Excel, un fitxer .CSV o qualsevol base de dades.

marc basat en dades - marc de seleni - edureka

Com que el cas de prova està separat del conjunt de dades, podem modificar fàcilment el cas de prova d’una funcionalitat concreta sense fer canvis al vostre codi a l’engròs. Per exemple, si voleu modificar el codi per a la funcionalitat d'inici de sessió, podeu modificar-ho només en lloc d'haver de modificar qualsevol altra porció dependent del mateix codi.

A més, també podeu controlar fàcilment la quantitat de dades que cal provar. Podeu augmentar fàcilment el nombre de paràmetres de prova afegint més camps de nom d’usuari i contrasenya al fitxer Excel (o altres fonts).

Per exemple, si he de comprovar l'inici de sessió d'una pàgina web, puc conservar el conjunt de credencials de nom d'usuari i contrasenya en un fitxer Excel i passar les credencials al codi per fer automatització al navegador en un fitxer de classe Java independent.

Ús del PDI d’Apache amb Selenium WebDriver

WebDriver no admet directament la lectura de fitxers Excel. Per tant, fem servir PDI Apache per llegir / escriure a qualsevol document de Microsoft Office. Podeu descarregar Apache POI (conjunt de fitxers JAR) des de aquí . Baixeu-vos el fitxer zip o el fitxer tar segons el vostre requisit i col·loqueu-los juntament amb el conjunt de Selenium JAR.

La coordinació entre el codi principal i el conjunt de dades es farà càrrec Proveïdors de dades TestNG, que és una biblioteca que s'inclou com a part dels fitxers Apache POI JAR. Amb finalitats de demostració, he creat un fitxer Excel anomenat 'LoginCredentials' en què els noms d'usuari i les contrasenyes s'han emmagatzemat en diferents columnes.

Mireu el codi següent per entendre el cas de prova. És un codi senzill per provar la funcionalitat d'inici de sessió d'una aplicació de reserva de vol.

package DataDriven import org.openqa.selenium.By import org.openqa.selenium.chrome.ChromeDriver import org.testng.Assert import org.testng.annotations.AfterMethod import org.testng.annotations.DataProvider import org.testng.annotations.Test classe pública DDTExcel {controlador ChromeDriver @Test (dataProvider = 'testdata') public void DemoProject (nom d'usuari de cadena, contrasenya de cadena) llança InterruptedException {System.setProperty ('webdriver.chrome.driver', 'C: UsersVardhanDownloadschromedriver.exe') controlador = nou ChromeDriver () driver.get ('http://newtours.demoaut.com/') driver.findElement (By.name ('userName')). sendKeys (nom d'usuari) driver.findElement (By.name ('contrasenya') )). sendKeys (contrasenya) driver.findElement (By.name ('login')). ​​Feu clic a () Thread.sleep (5000) Assert.assertTrue (driver.getTitle (). matches ('Find a Flight: Mercury Tours: '),' Credencials no vàlides ') System.out.println (' Inici de sessió correcte ')} @AfterMethod void ProgramTermination () {driver.quit ()} @DataProvider (name =' testdata ') public Object [] [] TestDa taFeed () {ReadExcelFile config = new ReadExcelFile ('C: UsersVardhanworkspaceSeleniumLoginCredentials.xlsx') int rows = config.getRowCount (0) Object [] [] credentials = new Object [rows] [2] for (int i = 0i

Si heu notat des de dalt, tenim un mètode anomenat 'TestDataFeed ()'. En aquest mètode, he creat una instància d'objecte d'una altra classe anomenada 'ReadExcelFile'. Mentre instanciava aquest objecte, he alimentat el camí del meu fitxer Excel que conté les dades. He definit a més un bucle for per recuperar el text del llibre Excel.

Però, per llegir les dades d'un número de full determinat, número de columna i número de fila, les trucades es fan a la classe 'ReadExcelFile'. A continuació es mostra el codi del meu 'ReadExcelFile'.

package DataDriven import java.io.File import java.io.FileInputStream import org.apache.poi.xssf.usermodel.XSSFSheet sheet import org.apache.poi.xssf.usermodel.XSSFWorkbook public class ReadExcelFile {XSSFWorkbook wb XSSFSheet sheet public excelPath) {try {File src = new File (excelPath) FileInputStream fis = new FileInputStream (src) wb = new XSSFWorkbook (fis)} catch (Exception e) {System.out.println (e.getMessage ())}} public Cadena getData (int sheetnumber, int row, int column) {sheet = wb.getSheetAt (sheetnumber) String data = sheet.getRow (fila) .getCell (columna) .getStringCellValue () retorna dades} public int getRowCount (int sheetIndex) { int fila = wb.getSheetAt (sheetIndex) .getLastRowNum () fila = fila + 1 fila de retorn}}

Primer, anoteu les biblioteques que he importat. He importat Apache POI XSSF biblioteques que s’utilitzen per llegir / escriure dades en fitxers Excel. Aquí he creat un constructor (objecte del mateix mètode) per passar els valors: número de full, número de fila i número de columna. Per entendre millor aquest marc, us demano que passeu pel següent vídeo, on he explicat això de manera estructurada.

Marc basat en dades a Selenium WebDriver | Tutorial de seleni

Passem ara al marc, és a dir, al marc basat en paraules clau.

Marc basat en paraules clau

El marc basat en paraules clau és una tècnica en què totes les operacions i instruccions a realitzar s’escriuen per separat del cas de prova real. La semblança que té amb el framework Data Driven és que les operacions a realitzar es tornen a emmagatzemar en un fitxer extern com el full Excel.

Les operacions de què parlo no són res més que els mètodes que cal executar com a part d’un cas de prova. L’avantatge de Keyword Driven Framework és que podeu controlar fàcilment les funcionalitats que voleu provar. Podeu especificar els mètodes que proven la funcionalitat de l'aplicació al fitxer Excel. Per tant, només es provaran els noms de mètodes especificats a Excel.

Per exemple, per iniciar la sessió a l'aplicació web, podem escriure diversos mètodes en el cas de prova principal, en el qual cada cas de prova provarà certes funcionalitats. Per instanciar el controlador del navegador hi pot haver un mètode, per trobar els camps de nom d’usuari i contrasenya, hi pot haver mètodes, per navegar a una pàgina web hi pot haver un altre mètode, etc.

Mireu el codi següent per entendre com es veu el marc. Les línies que es comenten al codi següent serveixen com a explicació si no ho enteneu.

package KeywordDriven import org.openqa.selenium.chrome.ChromeDriver import org.testng.Assert import org.testng.annotations.Test import java.util.concurrent.TimeUnit import org.openqa.selenium.By import org.openqa.selenium.WebDriver public class Actions {public static WebDriver driver public static void openBrowser () {System.setProperty ('webdriver.chrome.driver', 'C: UsersVardhanDownloadschromedriver.exe') driver = new ChromeDriver ()} public static void navigate () {driver .manage (). timeouts (). implícitament Espereu (10, TimeUnit.SECONDS) driver.get ('http://newtours.demoaut.com')} public static void input_Username () {driver.findElement (By.name (' userName ')). sendKeys (' mercury ')} public static void input_Password () {driver.findElement (By.name (' password))). sendKeys ('mercury')} public static void click_Login () {driver.findElement (By.name ('login')). ​​Click ()} @Test public static void verify_login () {String pageTitle = driver.getTitle () Assert.assertEquals (pageTitle, 'Find a Flight: Mercury Tours : ')} public static void closeBrowser () {driver.quit ()}}

Com podeu veure, les diferents funcionalitats que cal provar estan presents en mètodes separats que esperen ser cridats. Ara, aquests mètodes es cridaran des d’una altra classe, basant-se en la presència del nom del mètode al fitxer excel. I de la mateixa manera, per llegir el fitxer Excel i enviar els resultats, he escrit una altra classe. Tots dos es mostren a continuació.

El fitxer de classe que invoca els mètodes és aquest.

package KeywordDriven classe pública DriverScript {public static void main (String [] args) throws Exception {// Declaració de la ruta del fitxer Excel amb el nom del fitxer Excel String sPath = 'C: UsersVardhanworkspaceSelenium Frameworks DemodataEngine.xlsx' // Aquí estem passant el camí de l’Excel i el SheetName com a arguments per connectar-nos amb el fitxer Excel ReadExcelData.setExcelFile (sPath, 'Sheet1') // Els valors codificats durs s’utilitzen ara per a les files i columnes de l’Excel // Els valors codificats durs s’utilitzen per a la fila Excel & columnes per ara // En capítols posteriors substituirem aquests valors codificats per varibals // Aquest és el bucle per llegir els valors de la columna 3 (Paraula clau d'acció) fila per fila per a (int iRow = 1iRow<=7iRow++) { String sActions = ReadExcelData.getCellData(iRow, 1) //Comparing the value of Excel cell with all the keywords in the 'Actions' class if(sActions.equals('openBrowser')) { //This will execute if the excel cell value is 'openBrowser' //Action Keyword is called here to perform action Actions.openBrowser() } else if(sActions.equals('navigate')) { Actions.navigate() } else if(sActions.equals('input_Username')) { Actions.input_Username() } else if(sActions.equals('input_Password')) { Actions.input_Password() } else if(sActions.equals('click_Login')) { Actions.click_Login() } else if(sActions.equals('verify_Login')) { Actions.verify_login() } else if(sActions.equals('closeBrowser')) { Actions.closeBrowser() } } } } 

I el fitxer de classe que llegeix els valors d'Excel és aquest.

paquet KeywordDriven import java.io.FileInputStream import org.apache.poi.xssf.usermodel.XSSFSheet importation org.apache.poi.xssf.usermodel.XSSFWorkbook import org.apache.poi.xssf.usermodel.XSSFCell public class staticExExData XSSFSheet ExcelWSheet privat estàtic XSSFWorkbook ExcelWBook privat estàtic XSSFCell Cell // Aquest mètode consisteix a establir el camí del fitxer i obrir el fitxer Excel // Passar el camí d'accés de l'Excel i el nom del full com a arguments a aquest mètode. Excepció {FileInputStream ExcelFile = new FileInputStream (Path) ExcelWBook = new XSSFWorkbook (ExcelFile) ExcelWSheet = ExcelWBook.getSheet (SheetName)} // Aquest mètode consisteix a llegir les dades de prova des de la cel·la Excel // En això passem paràmetres / arguments ja que les cadenes estàtiques públiques de Nombre de files i Col Num getCellData (int RowNum, int ColNum) generen una excepció {Cell = ExcelWSheet.getRow (RowNum) .getCell (ColNum) String CellData = Cell.getStringCellValue () retornen CellData}}

Ara, passem a la part final d’aquest bloc de marc Selenium, on us mostraré com construir un marc híbrid.

Marc híbrid

El framework híbrid és una tècnica en la qual podem fer el millor ús tant dels frameworks basats en dades com en selenium basats en paraules clau. Utilitzant els exemples que es mostren més amunt en aquest bloc, podem construir un marc híbrid emmagatzemant els mètodes per executar-los en un fitxer Excel (mètode basat en paraules clau) i passant aquests noms de mètode Classe de reflexió Java (enfocament basat en dades) en lloc de crear un fitxer Si una altra cosa bucle a la classe 'DriverScript'.

Mireu la classe 'DriverScript' modificada al fragment de codi següent.Aquí, en lloc d'utilitzar diversos bucles If / Else, s'utilitza l'enfocament basat en dades per llegir els noms dels mètodes del fitxer Excel.

package HybridFramework import java.lang.reflect.Method classe pública DriverScriptJava {// Aquest és un objecte de classe, declarat com a 'públic estàtic' // De manera que es pot utilitzar fora de l'abast del mètode principal [] públic estàtic Accions actionKeywords public static String sActions // Aquest és un objecte de classe de reflexió, declarat com a 'públic estàtic' // De manera que es pot utilitzar fora de l'abast del mètode principal [] mètode públic estàtic del mètode [] public static void main (String [] args) llança Excepció {// Declaració del camí d'accés del fitxer Excel amb el nom del fitxer Excel Cadena sPath = 'C: UsersVardhanworkspaceSelenium Frameworks DemodataEngine.xlsx' // Aquí passem el camí d'accés de l'Excel i el SheetName per connectar amb el fitxer Excel // Aquest mètode es va crear prèviament ReadExcelData.setExcelFile (sPath, 'Sheet1') // Els valors codificats durs s'utilitzen ara per a les files i columnes d'Excel // Més endavant, utilitzarem aquests valors codificats de manera molt més eficient // Aquest és el bucle per llegir els valors de la fila de la columna (paraula clau d'acció) per fila // Significa que aquest bucle executarà tots els passos esmentats per al cas de prova al full Passos de prova per a (int iRow = 1iRow<=7iRow++) { sActions = ReadExcelData.getCellData(iRow, 1) //A new separate method is created with the name 'execute_Actions' //You will find this method below of the this test //So this statement is doing nothing but calling that piece of code to execute execute_Actions() } } //This method contains the code to perform some action //As it is completely different set of logic, which revolves around the action only, it makes sense to keep it separate from the main driver script //This is to execute test step (Action) private static void execute_Actions() throws Exception { //Here we are instantiating a new object of class 'Actions' actionKeywords = new Actions() //This will load all the methods of the class 'Actions' in it. //It will be like array of method, use the break point here and do the watch method = actionKeywords.getClass().getMethods() //This is a loop which will run for the number of actions in the Action Keyword class //method variable contain all the method and method.length returns the total number of methods for(int i = 0i

Per entendre millor aquest concepte d’estructures basades en dades, basades en paraules clau i basades en sistemes híbrids, us demano que vegeu el següent vídeo.

Selenium Framework utilitzant Java | Tutorial de seleni | Selenium Training Online

Espero que aquest bloc us hagi estat útil i us hagi donat una clara comprensió del que és un marc Selenium, de com és beneficiós i de com construir la vostra estructura de codi mitjançant aquests 3 marcs Selenium. Estigueu atents a més blocs d’aquesta sèrie.

Si voleu aprendre Selenium i construir una carrera professional en el domini de les proves, consulteu la nostra línia interactiva en directe aquí, ve amb suport 24 * 7 per guiar-vos durant tot el vostre període d'aprenentatge. Els conceptes relacionats amb “Selenium Framework” tenen una cobertura profunda al curs d’Edureka.

Tens alguna pregunta? Esmenta’l a la secció de comentaris i et respondrem.