Selenium Automation Framework: Data Driven, Keyword Driven & Hybrid

Innholdsfortegnelse:

Anonim

Hva er Selen Framework?

Den selen Ramme er en kodestruktur som gjør koden vedlikeholdet enkelt og effektivt. Uten rammer kan brukerne plassere "koden" og "dataene" på samme sted som verken er gjenbrukbar eller lesbar. Rammeverk gir gunstige resultater som økt gjenbrukbar kode, høyere bærbarhet, reduserte kostnader for skriptvedlikehold, bedre kodelesbarhet, etc.

Det er hovedsakelig tre typer rammer laget av Selenium WebDriver for å automatisere manuelle testsaker

  • Datadrevet testrammeverk
  • Keyword Driven Test Framework
  • Hybrid Test Framework

Datadrevet rammeverk i selen

Data Driven Framework in Selenium er en metode for å skille datasett fra testsaken. Når datasettene er skilt fra testsaken, kan den enkelt endres for en bestemt funksjonalitet uten å endre koden. Den brukes til å hente testtilfeller og suiter fra eksterne filer som Excel, .csv, .xml eller noen databasetabeller.

For å lese eller skrive en Excel, tilbyr Apache et veldig kjent biblioteksmål. Dette biblioteket er i stand til å lese og skrive både XLS og XLSX filformat i Excel.

For å lese XLS- filer leveres en HSSF- implementering av POI-biblioteket.

For å lese XLSX vil XSSF- implementering av POI- biblioteket være valget. La oss studere disse implementeringene i detalj.

Vi har allerede lært om datadrevet testing i vår forrige opplæring

Keyword Driven Framework in Selenium

Keyword Driven Framework in Selenium er en metode som brukes til å fremskynde automatisert testing ved å skille nøkkelord for vanlig sett med funksjoner og instruksjoner. Alle operasjonene og instruksjonene som skal utføres er skrevet i en ekstern fil som et Excel-ark. Brukere kan enkelt kontrollere og spesifisere funksjonalitetene de vil teste.

Slik ser det komplette rammeverket ut

Som du kan se er det et 5-trinns rammeverk. La oss studere det trinnvis i detalj

Trinn 1)

  • Driverskriptet Execute.java vil ringe til ReadGuru99ExcelFile.java
  • ReadGuru99ExcelFile.java har POI-skript for å lese data fra en Excel

Steg 2)

  • ReadGuru99ExcelFile.java vil lese data fra TestCase.xlsx
  • Slik ser arket ut-
  • I henhold til nøkkelordene skrevet i Excel-fil, vil rammeverket utføre operasjonen på UI.
  • For eksempel må vi klikke på knappen "Logg inn". Tilsvarende vil Excel ha nøkkelordet 'Klikk'. Nå kan AUT ha hundrevis av knapper på en side, for å identifisere en påloggingsknapp, i Excel vil vi legge inn Objektnavn som påloggingKnapp & objekttype som navn (se uthevet raden i bildet over). Objekttypen kan være Xpath, navnet CSS eller en hvilken som helst annen verdi

Trinn 3) ReadGuru99ExcelFile.java sender disse dataene til driverskriptet Execute.java

Trinn 4)

  • For alle våre UI-webelementer må vi opprette et objektlager der vi vil plassere elementelokatoren deres (som Xpath, navn, CSS-bane, klassenavn etc.)
  • Execute.java (vårt driverskript) vil lese hele Object Repository og lagre det i en variabel
  • For å lese dette objektlageret trenger vi en ReadObject-klasse som har en getObjectRepository-metode for å lese den.

MERKNAD: Du tenker kanskje hvorfor trenger vi å opprette et objektlager. Svaret hjelper i vedlikehold av koder. For eksempel bruker vi knappen med navn = btnlogin i 10 forskjellige testtilfeller. I fremtiden bestemmer utvikleren seg for å endre navnet fra btnlogin for å sende inn. Du må gjøre en endring i alle de 10 testtilfellene. Når det gjelder et objektlager, vil du gjøre endringen bare én gang i depotet.

Trinn 5)

  • Driveren vil overføre dataene fra Excel & Object Repository til UIOperation-klassen
  • UIOperation-klassen har funksjoner for å utføre handlinger som tilsvarer nøkkelord som CLICK, SETTEXT osv ... nevnt i excel
  • UIOperation-klasse er en Java-klasse som har den faktiske implementeringen av koden for å utføre operasjoner på webelementer

Hele prosjektet vil se ut som-

La oss se på et eksempel:

Test Scenario

  • Vi gjennomfører to testsaker
  • Prøvesak 1:
  • Gå til http://demo.guru99.com/V4/
  • Skriv inn bruker-ID
  • Oppgi passord
  • Klikk på Tilbakestill
  • Prøvesak 2:
  • Gå til http://demo.guru99.com/V4/
  • Skriv inn bruker-ID
  • Oppgi passord
  • Klikk på Logg inn

objekt.egenskaper

url = http: //demo.guru99.com/V4/

brukernavn = uid

passord = passord

tittel = barone

loginButton = btnLogin

resetButton = btnReset

ReadGuru99ExcelFile.java

pakke excelExportAndFileIO;importere java.io.File;importere java.io.FileInputStream;importere java.io.IOException;importer org.apache.poi.hssf.usermodel.HSSFWorkbook;importer org.apache.poi.ss.usermodel.Sheet;importer org.apache.poi.ss.usermodel.Workbook;importer org.apache.poi.xssf.usermodel.XSSFWorkbook;offentlig klasse ReadGuru99ExcelFile {offentlig ark readExcel (String filePath, String fileName, String sheetName) kaster IOException {// Opprett et objekt av filklassen for å åpne xlsx-filenFilfil = ny fil (filePath + "\\" + filnavn);// Opprett et objekt av FileInputStream-klassen for å lese Excel-filenFileInputStream inputStream = ny FileInputStream (fil);Arbeidsbok guru99Arbeidsbok = null;// Finn filtypen ved å dele filnavnet i substing og få bare utvidelsesnavnetStreng fileExtensionName = fileName.substring (fileName.indexOf ("."));// Sjekk tilstanden hvis filen er xlsx-filhvis (fileExtensionName.equals (". xlsx")) {// Hvis det er xlsx-fil, opprett deretter objektet til XSSFWorkbook-klassenguru99Workbook = ny XSSFWorkbook (inputStream);}// Sjekk tilstanden hvis filen er xls-filannet hvis (fileExtensionName.equals (". xls")) {// Hvis det er en xls-fil, opprett deretter objektet til XSSFWorkbook-klassenguru99Workbook = ny HSSFWorkbook (inputStream);}// Les arket inne i arbeidsboken ved navnArk guru99Sheet = guru99Workbook.getSheet (arknavn);retur guru99Sheet;}}

ReadObject.java

pakke drift;importere java.io.File;importere java.io.FileInputStream;importere java.io.IOException;importere java.io.InputStream;importere java.util.Properties;offentlig klasse ReadObject {Egenskaper p = nye egenskaper ();public Properties getObjectRepository () kaster IOException {// Les objektdatabasefilenInputStream stream = new FileInputStream (new File (System.getProperty ("user.dir") + "\\ src \\ objects \\ object.properties"));// laste alle objekterp.load (stream);retur p;}}

UIOperation.java

pakke drift;importere java.util.Properties;importer org.openqa.selenium.By;importer org.openqa.selenium.WebDriver;offentlig klasse UIOperation {WebDriver driver;public UIOperation (WebDriver driver) {this.driver = driver;}offentlig tomrom utføre (Egenskaper p, strengoperasjon, strengobjektnavn, strengobjektype, strengverdi) kaster unntak {System.out.println ("");bryter (operation.toUpperCase ()) {sak "KLIKK":// Utfør klikkdriver.findElement (this.getObject (p, objectName, objectType)). klikk ();gå i stykker;sak "SETTEXT":// Sett tekst på kontrolldriver.findElement (this.getObject (p, objectName, objectType)). sendKeys (verdi);gå i stykker;sak "GOTOURL":// Få nettadressen til søknadendriver.get (p.getProperty (verdi));gå i stykker;sak "GETTEXT":// Få tekst av et elementdriver.findElement (this.getObject (p, objectName, objectType)). getText ();gå i stykker;misligholde:gå i stykker;}}/ *** Finn element BY ved å bruke objekttype og verdi* @param s* @param objektnavn* @param objectType* @komme tilbake* @kaster unntak* /privat Ved getObject (Egenskaper p, String objectName, String objectType) kaster Unntak {// Finn av xpathhvis (objectType.equalsIgnoreCase ("XPATH")) {returnere By.xpath (p.getProperty (objectName));}// finn etter klasseannet hvis (objectType.equalsIgnoreCase ("CLASSNAME")) {returnere By.className (p.getProperty (objectName));}// finn etter navnannet hvis (objectType.equalsIgnoreCase ("NAME")) {returner By.name (p.getProperty (objectName));}// Finn av cssannet hvis (objectType.equalsIgnoreCase ("CSS")) {returner By.cssSelector (p.getProperty (objectName));}// finn med lenkeannet hvis (objectType.equalsIgnoreCase ("LINK")) {returnere By.linkText (p.getProperty (objectName));}// finn ved delvis lenkeannet hvis (objectType.equalsIgnoreCase ("PARTIALLINK")) {returnere By.partialLinkText (p.getProperty (objectName));}ellers{kaste nytt unntak ("Feil objekttype");}}}

ExecuteTest.java

pakke test tilfeller;importere java.util.Properties;importoperasjon.ReadObject;importoperasjon.UIOdrift;importer org.apache.poi.ss.usermodel.Row;importer org.apache.poi.ss.usermodel.Sheet;importer org.openqa.selenium.WebDriver;importer org.openqa.selenium.firefox.FirefoxDriver;importer org.testng.annotations.Test;importere excelExportAndFileIO.ReadGuru99ExcelFile;offentlig klasse ExecuteTest {@Testpublic void testLogin () kaster unntak {// TODO Auto-generert metodestubWebDriver webdriver = ny FirefoxDriver ();ReadGuru99ExcelFile-fil = ny ReadGuru99ExcelFile ();ReadObject-objekt = nytt ReadObject ();Egenskaper allObjects = object.getObjectRepository ();UIOperation operasjon = ny UIOperation (webdriver);// Les søkeordarkArk guru99Sheet = file.readExcel (System.getProperty ("user.dir") + "\\", "TestCase.xlsx", "KeywordFramework");// Finn antall rader i Excel-filenint rowCount = guru99Sheet.getLastRowNum () - guru99Sheet.getFirstRowNum ();// Lag en sløyfe over alle radene i Excel-filen for å lese denfor (int i = 1; i " + row.getCell (0) .toString () + "Started");}}}}

Etter utførelse vil utdata se ut som -

Last ned Selenium Project Files for Demo i denne veiledningen

Hybrid Framework

Hybrid Framework in Selenium er et konsept der vi bruker fordelen med både Keyword driven framework så vel som Data driven framework. Det er et brukervennlig rammeverk som lar manuelle testere lage testtilfeller ved å bare se på nøkkelordene, testdataene og objektdatabasen uten koding i rammen.

Her for søkeord vil vi bruke Excel-filer til å opprettholde testtilfeller, og for testdata kan vi bruke data, leverandør av Testng framework.

Her i vårt hybridrammeverk trenger vi ikke endre noe i Keyword driven framework, her trenger vi bare å erstatte ExecuteTest.java-filen med HybridExecuteTest.java-filen.

Denne HybridExecuteTest-filen har all koden for nøkkelorddrevet med dataleverandørkonsept.

Den fullstendige illustrasjonen av hybrid rammeverk vil se ut

HybridExecuteTest.java

pakke test tilfeller;importere java.io.IOException;importere java.util.Properties;importoperasjon.ReadObject;importoperasjon.UIOdrift;importer org.apache.poi.ss.usermodel.Row;importer org.apache.poi.ss.usermodel.Sheet;importer org.openqa.selenium.WebDriver;importer org.openqa.selenium.firefox.FirefoxDriver;importer org.testng.annotations.DataProvider;importer org.testng.annotations.Test;importere excelExportAndFileIO.ReadGuru99ExcelFile;offentlig klasse HybridExecuteTest {WebDriver webdriver = null;@Test (dataProvider = "hybridData")public void testLogin (String testcaseName, String keyword, String objectName, String objectType, String value) throw Exception {// TODO Auto-generert metodestubhvis (testcaseName! = null && testcaseName.length ()! = 0) {webdriver = ny FirefoxDriver ();}ReadObject-objekt = nytt ReadObject ();Egenskaper allObjects = object.getObjectRepository ();UIOperation operasjon = ny UIOperation (webdriver);// Ring utfør funksjon for å utføre operasjon på brukergrensesnittetoperation.perform (allObjects, keyword, objectName,objectType, verdi);}@DataProvider (name = "hybridData")public Object [] [] getDataFromDataprovider () kaster IOException {Objekt [] [] objekt = null;ReadGuru99ExcelFile-fil = ny ReadGuru99ExcelFile ();// Les søkeordarkArk guru99Sheet = file.readExcel (System.getProperty ("user.dir") + "\\", "TestCase.xlsx", "KeywordFramework");// Finn antall rader i Excel-filenint rowCount = guru99Sheet.getLastRowNum () - guru99Sheet.getFirstRowNum ();objekt = nytt objekt [rowCount] [5];for (int i = 0; i 

Sammendrag:

  • Vi kan lage tre typer testrammeverk ved hjelp av Selenium WebDriver.
  • Dette er Data Driven, Keyword Driven og Hybrid test framework.
  • Vi kan oppnå datadrevet rammeverk ved hjelp av TestNGs dataleverandør.
  • I søkeorddrevet rammeverk skrives nøkkelord i noen eksterne filer som excel-fil, og javakode vil kalle denne filen og utføre testtilfeller.
  • Hybrid-rammeverket er en blanding av nøkkelorddrevet og datadrevet rammeverk.

Last ned Selenium Project Files for Demo i denne veiledningen