Construirea unui cadru de seleniu bazat pe date, bazat pe cuvinte cheie și hibrid



Acest blog explică ce este un cadru Selenium, beneficiile sale și cum se implementează cadrele bazate pe date, bazate pe cuvinte cheie și hibride în seleniu.

Anteriorul din această serie v-au oferit expunerea la concepte de bază în testarea seleniului.Cu toate acestea, în acest blog, vă voi spune cum să utilizați un cadru Selenium pentru a optimiza structura codului dvs. și acest lucru vă va apropia pentru a deveni un .

Ce este un cadru Selenium?

Cadrul de seleniu este o structură de cod pentru simplificarea întreținerii codului și lizibilitatea codului. Un cadru implică divizarea întregului cod în bucăți de cod mai mici, care testează o anumită funcționalitate.





Codul este structurat astfel încât „setul de date” să fie separat de „cazul de testare” propriu-zis care va testa funcționalitatea aplicației web. De asemenea, poate fi structurat într-un mod în care, cazurile de testare care trebuie executate sunt numite (invocate) dintr-o aplicație externă (cum ar fi un .csv).

Există o serie de cadre acolo, dar 3 cadre utilizate în mod obișnuit pentru seleniu sunt:



Aceste cadre vor fi discutate cu o demonstrație în acest blog. Dar, înainte de a merge mai departe, permiteți-mi să vă spun de ce trebuie să existe un cadru Selenium și ce beneficii veți obține din utilizarea lor.

tutorial pl sql pentru începători cu exemple

De ce avem nevoie de un cadru Selenium?

Fără un cadru în loc, va exista un caz de testare care va cuprinde întreaga funcționalitate de testare. Partea înfricoșătoare este că acest caz de test unic are capacitatea de a crește până la un milion de linii de cod. Deci, este destul de evident că un caz de testare atât de mare va fi greu de citit. Chiar dacă doriți să modificați orice funcționalitate mai târziu, atunci veți avea dificultăți în modificarea codului.

Deoarece implementarea unui cadru, va avea ca rezultat coduri mai mici, dar multiple, există diverse avantaje.



Beneficiile cadrului Selenium

  • Creșterea reutilizării codului
  • Citire îmbunătățită a codului
  • Portabilitate mai mare
  • Scenariu redusîntreținere

Acum, că știți elementele de bază ale cadrelor, permiteți-mi să le explic pe fiecare dintre ele în detaliu.

Cadru bazat pe date

Un cadru bazat pe date în Selenium este tehnica de separare a „setului de date” de „testul cazului” real (cod). Acest cadru depinde complet de datele de testare de intrare. Datele de testare sunt furnizate din surse externe, cum ar fi un fișier excel, fișier .CSV sau orice bază de date.

cadru bazat pe date - cadru seleniu - edureka

Deoarece cazul de testare este separat de setul de date, putem modifica cu ușurință cazul de testare a unei anumite funcționalități fără a face modificări de ansamblu la codul dvs. De exemplu, dacă doriți să modificați codul pentru funcționalitatea de conectare, atunci puteți modifica exact asta în loc să trebuiască să modificați și orice altă porțiune dependentă din același cod.

În plus, puteți controla cu ușurință cât de multe date trebuie testate. Puteți crește cu ușurință numărul de parametri de testare adăugând mai multe câmpuri de nume de utilizator și parolă în fișierul excel (sau alte surse).

De exemplu, dacă trebuie să verific datele de conectare la o pagină web, atunci pot păstra setul de acreditări de nume de utilizator și parolă într-un fișier Excel și pot transfera acreditările la cod pentru a efectua automatizarea browserului într-un fișier de clasă Java separat.

Utilizarea Apache POI cu Selenium WebDriver

WebDriver nu acceptă direct citirea fișierelor Excel. De aceea folosim Apache POI pentru citire / scriere pe orice document Microsoft Office. Puteți descărca Apache POI (set de fișiere JAR) din Aici . Descărcați fișierul zip sau fișierul tar conform cerințelor dvs. și plasați-le împreună cu setul de seleniu JAR-uri.

Coordonarea dintre codul principal și setul de date va fi asigurată de către Furnizori de date TestNG, care este o bibliotecă care vine ca parte a fișierelor Apache POI JAR. În scop demonstrativ, am creat un fișier Excel numit „LoginCredentials” în care numele de utilizator și parolele au fost stocate în diferite coloane.

Aruncați o privire la codul de mai jos pentru a înțelege cazul testului. Este un cod simplu pentru testarea funcționalității de conectare a unei aplicații de rezervare a zborurilor.

pachet 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 public class DDTExcel {ChromeDriver driver @Test (dataProvider = 'testdata') public void DemoProject (String username, String password) throws InterruptedException {System.setProperty ('webdriver.chrome.driver', 'C: UsersVardhanDownloadschromedriver.exe') driver = nou ChromeDriver () driver.get ('http://newtours.demoaut.com/') driver.findElement (By.name ('userName')). sendKeys (nume utilizator) driver.findElement (By.name ('parolă') )). sendKeys (parola) driver.findElement (By.name ('login')). ​​faceți clic pe () Thread.sleep (5000) Assert.assertTrue (driver.getTitle (). matches ('Find a Flight: Mercury Tours: '),' Acreditari nevalide ') System.out.println (' Conectare reușită ')} @AfterMethod void ProgramTermination () {driver.quit ()} @DataProvider (name =' testdata ') public Object [] [] TestDa taFeed () {ReadExcelFile config = new ReadExcelFile ('C: UsersVardhanworkspaceSeleniumLoginCredentials.xlsx') int lines = config.getRowCount (0) Object [] [] credentials = new Object [rows] [2] for (int i = 0i

Dacă ați observat de mai sus, avem o metodă numită „TestDataFeed ()”. În această metodă, am creat o instanță obiect a unei alte clase numită „ReadExcelFile”. În timp ce instanțiam acest obiect, am alimentat calea fișierului meu Excel care conține datele. Am definit în continuare o buclă for pentru a extrage textul din registrul de lucru Excel.

Dar, pentru citirea datelor dintr-un anumit număr de foaie, numărul coloanei și numărul rândului, apelurile sunt efectuate la clasa „ReadExcelFile”. Codul „ReadExcelFile” al meu este mai jos.

pachet DataDriven import java.io.File import java.io.FileInputStream import org.apache.poi.xssf.usermodel.XSSFSheet 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 Șir getData (int sheetnumber, int row, int column) {sheet = wb.getSheetAt (sheetnumber) String data = sheet.getRow (row) .getCell (column) .getStringCellValue () return data} public int getRowCount (int sheetIndex) { int rând = wb.getSheetAt (sheetIndex) .getLastRowNum () rând = rând + 1 rând de returnare}}

Mai întâi notați bibliotecile pe care le-am importat. Am importat Apache POI XSSF biblioteci care sunt folosite pentru a citi / scrie date în fișiere Excel. Aici am creat un constructor (obiect al aceleiași metode) pentru a transmite valorile: numărul foii, numărul rândului și numărul coloanei. Pentru a înțelege mai bine acest cadru, vă rog să parcurgeți videoclipul de mai jos, unde am explicat acest lucru într-un mod structurat.

Cadrul bazat pe date în Selenium WebDriver | Tutorial Selenium

Acum să trecem la cadru, adică cadru bazat pe cuvinte cheie.

Cadru bazat pe cuvinte cheie

Keyword Driven Framework este o tehnică în care toate operațiunile și instrucțiunile care trebuie efectuate sunt scrise separat de cazul testului real. Asemănarea pe care o are cu cadrul Data Driven este că operațiunile care trebuie efectuate sunt din nou stocate într-un fișier extern, cum ar fi foaia Excel.

Operațiunile despre care vorbesc nu sunt altceva decât metodele care trebuie executate ca parte a unui caz de testare. Avantajul cu cadrul Keyword Driven este că puteți controla cu ușurință funcționalitățile pe care doriți să le testați. Puteți specifica metodele care testează funcționalitatea aplicației în fișierul excel. Astfel, vor fi testate numai acele nume de metode care sunt specificate în excel.

De exemplu, pentru conectarea la aplicația web, putem scrie mai multe metode în cazul principal de testare, în care fiecare caz de testare va testa anumite funcționalități. Pentru instanțierea driverului browserului ar putea exista o metodă, pentru găsirea câmpurilor de nume de utilizator și parolă, ar putea exista metode, pentru navigarea la o pagină web ar putea exista o altă metodă etc.

Aruncați o privire la codul de mai jos pentru a înțelege aspectul cadrului. Liniile care sunt comentate în codul de mai jos servesc drept explicație dacă nu înțelegeți.

pachet 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 (). implicit Așteptați (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 ()}}

După cum puteți vedea, diferitele funcționalități care trebuie testate sunt prezente în metode separate care așteaptă să fie apelate. Acum, aceste metode vor fi apelate dintr-o altă clasă, pe baza prezenței numelui metodei în fișierul excel. Și în mod similar, pentru a citi fișierul Excel și a trimite înapoi rezultatele, am scris o altă clasă. Ambele sunt afișate mai jos.

Fișierul clasei care invocă metodele este acesta.

package KeywordDriven public class DriverScript {public static void main (String [] args) throws Exception {// Declararea căii fișierului Excel cu numele fișierului Excel String sPath = 'C: UsersVardhanworkspaceSelenium Frameworks DemodataEngine.xlsx' // Aici trecem calea Excel și SheetName ca argumente pentru a ne conecta cu fișierul Excel ReadExcelData.setExcelFile (sPath, 'Sheet1') // Valorile codate pe hard sunt utilizate pentru rândul și coloanele Excel pentru moment // Valorile codate pe hard sunt utilizate pentru rândul Excel & coloane deocamdată // În capitolele ulterioare vom înlocui aceste valori codate cu varibale // Aceasta este bucla pentru citirea valorilor coloanei 3 (Cuvânt cheie de acțiune) rând cu rând pentru (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 fișierul de clasă care citește valorile Excel este acesta.

pachet KeywordDriven import java.io.FileInputStream import org.apache.poi.xssf.usermodel.XSSFSheet import org.apache.poi.xssf.usermodel.XSSFWorkbook import org.apache.poi.xssf.usermodel.XSSFCell public class ReadExcelData XSSFSheet ExcelWSheet private static XSSFWorkbook ExcelWBook private static XSSFCell Cell // Această metodă este de a seta calea fișierului și de a deschide fișierul Excel // Treceți calea Excel și SheetName ca argumente la această metodă public static void setExcelFile (String Path, String SheetName) aruncă Excepție {FileInputStream ExcelFile = new FileInputStream (Path) ExcelWBook = new XSSFWorkbook (ExcelFile) ExcelWSheet = ExcelWBook.getSheet (SheetName)} // Această metodă este de a citi datele de test din celula Excel // În aceasta trecem parametri / argumente ca Row Num și Col Num public static String getCellData (int RowNum, int ColNum) aruncă Excepție {Cell = ExcelWSheet.getRow (RowNum) .getCell (ColNum) String CellData = Cell.getStringCellValue () return CellData}}

Acum, să trecem la partea finală a acestui blog cadru Selenium, unde vă voi arăta cum să construiți un cadru hibrid.

Cadrul hibrid

Cadrul hibrid este o tehnică în care putem folosi cât mai bine atât cadrele bazate pe date, cât și cadrele selectate prin cuvinte cheie. Folosind exemplele prezentate mai sus în acest blog, putem construi un cadru hibrid stocând metodele de executat într-un fișier excel (abordare bazată pe cuvinte cheie) și trecând aceste nume de metode către Clasa de reflecție Java (abordare bazată pe date) în loc să creeze un Dacă / Altfel buclă în clasa „DriverScript”.

Aruncați o privire la clasa „DriverScript” modificată în fragmentul de cod de mai jos.Aici, în loc să folosiți mai multe bucle If / Else, abordarea bazată pe date este utilizată pentru a citi numele metodelor din fișierul excel.

package HybridFramework import java.lang.reflect.Method public class DriverScriptJava {// Acesta este un obiect de clasă, declarat ca „public static” // Astfel încât să poată fi folosit în afara scopului metodei principale [] public static Actions actionKeywords public static String sActions // Acesta este obiectul clasei de reflecție, declarat ca „public static” // Astfel încât să poată fi utilizat în afara scopului metodei principale [] metodei statice publice metode [] public static void main (String [] args) aruncă Excepție {// Declararea căii fișierului Excel cu numele fișierului Excel String sPath = 'C: UsersVardhanworkspaceSelenium Frameworks DemodataEngine.xlsx' // Aici trecem calea Excel și SheetName pentru a ne conecta cu fișierul Excel // Această metodă a fost creat anterior ReadExcelData.setExcelFile (sPath, 'Sheet1') // Valorile codate sunt utilizate pentru rândul și coloanele Excel deocamdată // Mai târziu, vom folosi aceste valori codate mult mai eficient // Aceasta este bucla pentru citire valorile rândului coloanei (Cuvânt cheie acțiune) după rând // Înseamnă că această buclă va executa toți pașii menționați pentru cazul de test în foaia Etape de testare pentru (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

Pentru a înțelege mai bine acest concept de cadre bazate pe date, bazate pe cuvinte cheie și hibrid, vă rugăm să vizionați videoclipul de mai jos.

Selenium Framework folosind Java | Tutorial Selenium | Selenium Training Online

Sper că acest blog ți-a fost util și ți-a oferit o înțelegere clară a ceea ce este un cadru Selenium, cum este benefic și cum să-ți construiești structura codului folosind aceste 3 cadre Selenium. Rămâneți la curent cu mai multe bloguri din această serie.

Dacă doriți să învățați seleniul și să construiți o carieră în domeniul testării, consultați interactivul nostru live-online aici, acesta vine cu suport 24 * 7 pentru a vă ghida pe toată perioada de învățare. Conceptele legate de „Selenium Framework” au o acoperire aprofundată în cadrul cursului Edureka.

Ai o întrebare pentru noi? Vă rugăm să o menționați în secțiunea de comentarii și vă vom răspunde.