Duomenimis pagrįstos, raktiniais žodžiais pagrįstos ir hibridinės seleno struktūros kūrimas



Šiame tinklaraštyje paaiškinta, kas yra „Selenium“ sistema, jos pranašumai ir kaip selene įdiegti „Data Driven“, „Key Driven & Hybrid“ sistemas.

Ankstesnis šioje serijoje susipažinote su pagrindinėmis seleno testavimo koncepcijomis.Tačiau šiame tinklaraštyje aš jums pasakysiu, kaip naudoti „Selenium“ sistemą, kad optimizuotumėte savo kodo struktūrą, ir tai priartins jus prie to, kad taptumėte .

Kas yra seleno karkasas?

„Selenium framework“ yra kodo struktūra, leidžianti supaprastinti kodo priežiūrą ir pagerinti kodo įskaitomumą. Karkasas apima viso kodo suskaidymą į mažesnius kodo gabalus, kurie išbando tam tikrą funkcionalumą.





Kodas yra sukonstruotas taip, kad „duomenų rinkinys“ būtų atskirtas nuo tikrojo „bandymo atvejo“, kuris patikrins žiniatinklio programos funkcionalumą. Jis taip pat gali būti struktūrizuotas taip, kad bandomieji atvejai, kuriuos reikia vykdyti, yra iškviečiami (iškviečiami) iš išorinės programos (pvz., .Csv).

Yra keletas sistemų, tačiau 3 dažniausiai naudojamos „Selenium“ sistemos:



Šios sistemos bus aptartos su šio tinklaraščio demonstracine versija. Bet prieš eidamas toliau, leiskite man papasakoti, kodėl turi būti sukurta „Selenium“ sistema ir kokią naudą gausite naudodamiesi jomis.

Kodėl mums reikalinga „Selenium“ sistema?

Neturint pagrindo, bus vienas bandymo atvejis, apimantis visą testavimo funkciją. Baisiausia tai, kad šis vienintelis bandymo atvejis gali pakilti iki milijono kodo eilučių. Taigi akivaizdu, kad tokį didžiulį bandomąjį atvejį bus sunku perskaityti. Net jei vėliau norėsite modifikuoti kokią nors funkciją, modifikuoti kodą jums bus sunku.

ką ide naudoti java

Kadangi bus įdiegta sistema, bus gauti mažesni, bet keli kodo elementai, yra įvairių pranašumų.



Seleno pagrindo privalumai

  • Padidėjęs kodo pakartotinis naudojimas
  • Pagerintas kodo įskaitomumas
  • Didesnis perkeliamumas
  • Sumažintas scenarijuspriežiūra

Dabar, kai žinote pagrindinius pagrindus, leiskite man juos išsamiai paaiškinti.

Duomenimis paremta sistema

Duomenimis pagrįsta „Selenium“ sistema yra „duomenų rinkinio“ atskyrimo nuo faktinio „bandymo atvejo“ (kodo) technika. Ši sistema visiškai priklauso nuo įvesties bandymo duomenų. Testo duomenys teikiami iš išorinių šaltinių, tokių kaip „Excel“ failas, .CSV failas ar bet kokia duomenų bazė.

duomenų valdoma sistema - seleno sistema - edureka

Kadangi bandomasis atvejis yra atskirtas nuo duomenų rinkinio, mes galime lengvai modifikuoti tam tikros funkcijos bandomąjį atvejį, neatlikdami didmeninių jūsų kodo pakeitimų. Pvz., Jei norite modifikuoti prisijungimo funkcijų kodą, galite tai modifikuoti, o ne modifikuoti bet kurią kitą to paties kodo dalį.

Be to, jūs taip pat galite lengvai kontroliuoti, kiek duomenų reikia išbandyti. Galite lengvai padidinti bandymo parametrų skaičių, pridėdami daugiau vartotojo vardo ir slaptažodžio laukų prie „Excel“ failo (ar kitų šaltinių).

Pavyzdžiui, jei turiu patikrinti prisijungimą prie tinklalapio, tada galiu laikyti vartotojo vardo ir slaptažodžio kredencialų rinkinį „Excel“ faile ir perduoti kredencialus kodui, kad atlikčiau automatizavimą naršyklėje atskirame „Java“ klasės faile.

„Apache POI“ naudojimas su „Selenium WebDriver“

„WebDriver“ tiesiogiai nepalaiko „Excel“ failų skaitymo. Taigi mes naudojame Apache LV skaityti / rašyti į bet kurį „Microsoft Office“ dokumentą. Galite atsisiųsti „Apache POI“ (JAR failų rinkinį) iš čia . Atsisiųskite ZIP ar dervos failą pagal savo reikalavimus ir įdėkite juos kartu su Selenium JAR rinkiniu.

Pagrindinio kodo ir duomenų rinkinio koordinavimą pasirūpins „TestNG“ duomenų teikėjai, kuri yra biblioteka, gaunama kaip „Apache POI JAR“ failų dalis. Demonstraciniam tikslui sukūriau „Excel“ failą „LoginCredentials“, kuriame vartotojo vardai ir slaptažodžiai buvo saugomi skirtinguose stulpeliuose.

java kas yra žetonas

Pažvelkite į žemiau pateiktą kodą, kad suprastumėte bandomąjį atvejį. Tai paprastas kodas, skirtas patikrinti skrydžio rezervavimo programos prisijungimo funkcionalumą.

paketas „DataDriven“ importas org.openqa.selenium.Be importavimo org.openqa.selenium.chrome.ChromeDriver importuoti org.testng.Assert import org.testng.annotations.AfterMethod importuoti org.testng.annotations.DataProvider importuoti org.testng.annotations.Test public class DDTExcel {ChromeDriver driver @Test (dataProvider = 'testdata') public void DemoProject (eilutės vartotojo vardas, eilutės slaptažodis) išmeta InterruptedException {System.setProperty ('webdriver.chrome.driver', 'C: UsersVardhanDownloadschromedriver.exe') tvarkyklę = naujas „ChromeDriver“ () driver.get ('http://newtours.demoaut.com/') driver.findElement (By.name ('vartotojo vardas')). sendKeys (vartotojo vardas) driver.findElement (By.name ('slaptažodis') )). sendKeys (slaptažodis) driver.findElement (By.name ('prisijungimas')). spustelėkite () Thread.sleep (5000) Assert.assertTrue (driver.getTitle (). atitinka ('Raskite skrydį: „Mercury Tours“: '),' Neteisingi prisijungimo duomenys ') System.out.println (' Prisijungimas sėkmingas ')} @AfterMethod negalioja ProgramTermination () {driver.quit ()} @DataProvider (name =' testdata ') viešasis objektas [] [] TestDa taFeed () {ReadExcelFile config = new ReadExcelFile ('C: UsersVardhanworkspaceSeleniumLoginCredentials.xlsx') int eilutės = config.getRowCount (0) objektas [] [] kredencialai = naujas objektas [eilutės] [2], skirtas (int i = 0i

Jei pastebėjote iš viršaus, mes turime metodą pavadinimu „TestDataFeed ()“. Šiuo metodu sukūriau kitos klasės objektų egzempliorių pavadinimu „ReadExcelFile“. Tikrindamas šį objektą, aš suvedžiau savo „Excel“ failo, kuriame yra duomenys, kelią. Aš dar apibrėžiau „for loop“, norėdamas gauti tekstą iš „Excel“ darbaknygės.

Tačiau norint nuskaityti duomenis iš nurodyto lapo numerio, stulpelio numerio ir eilutės numerio, skambinama į „ReadExcelFile“ klasę. Mano „ReadExcelFile“ kodas yra žemiau.

paketas „DataDriven“ importuokite java.io.File importuokite java.io.FileInputStream importo org.apache.poi.xssf.usermodel.XSSFSheet importavimo org.apache.poi.xssf.usermodel.XSSFWorkbook viešosios klasės „ReadExcelFile“ {XSSFWorkbook wb XSSFsheetFile public Read excelPath) {bandykite {File src = new File (excelPath) FileInputStream fis = new FileInputStream (src) wb = new XSSFWorkbook (fis)} catch (Išimtis e) {System.out.println (e.getMessage ())}} public Eilutė „getData“ (int lapų skaičius, int eilutė, int stulpelis) {sheet = wb.getSheetAt (sheetnumber) Stygos duomenys = sheet.getRow (eilutė) .getCell (stulpelis) .getStringCellValue () grąžinimo duomenys} public int getRowCount (int sheetIndex) { int eilutė = wb.getSheetAt (sheetIndex) .getLastRowNum () eilutė = eilutė + 1 grąžinimo eilutė}}

Pirmiausia atkreipkite dėmesį į mano importuotas bibliotekas. Aš importavau Apache POI XSSF bibliotekos, kurios naudojamos duomenims skaityti / rašyti, norint tobulinti failus. Čia sukūriau konstruktorių (to paties metodo objektą) perduoti reikšmes: lapo numeris, eilutės numeris ir stulpelio numeris. Norėdami geriau suprasti šią sistemą, prašau jūsų peržiūrėti toliau pateiktą vaizdo įrašą, kuriame tai paaiškinau struktūrizuotai.

Duomenimis pagrįsta sistema „Selenium WebDriver“ Seleno pamoka

Dabar pereikime prie sistemos, t. Y. Raktiniais žodžiais paremtos sistemos.

Raktiniais žodžiais paremta sistema

„Key Driven Framework“ yra metodas, kai visos atliekamos operacijos ir instrukcijos parašomos atskirai nuo tikrojo bandymo atvejo. Panašumas su „Data Driven“ sistema yra tas, kad atliekamos operacijos vėl įrašomos į išorinį failą, pvz., „Excel“ lapą.

Operacijos, apie kurias kalbu, yra ne kas kita, o metodai, kuriuos reikia atlikti kaip bandomosios bylos dalį. Raktinių žodžių varomosios sistemos nauda yra ta, kad galite lengvai valdyti norimas išbandyti funkcijas. „Excel“ faile galite nurodyti metodus, kurie tikrina programos funkcionalumą. Taigi bus tikrinami tik tie „Excel“ nurodyti metodų pavadinimai.

Pavyzdžiui, norint prisijungti prie žiniatinklio programos, pagrindiniame bandymo atveju galime parašyti kelis metodus, kuriuose kiekvienas bandymo atvejis patikrins tam tikrą funkcionalumą. Naršyklės tvarkyklės greitinimui gali būti vienas būdas, naudotojo vardo ir slaptažodžio laukams rasti būdai, naršymui į tinklalapį - kitas būdas ir kt.

Pažvelkite į žemiau pateiktą kodą, kad suprastumėte, kaip sistema atrodo. Toliau pateiktame kode komentuojamos eilutės yra paaiškinimas, jei nesuprantate.

paketas „KeyDriven“ importas org.openqa.selenium.chrome.ChromeDriver importuoti org.testng.Assert importuoti org.testng.annotations.Test importuoti java.util.concurrent.TimeUnit import org.openqa.selenium.Be importuojant org.openqa.selenium.WebDriver public class Actions {public static WebDriver tvarkyklė public static void openBrowser () {System.setProperty ('webdriver.chrome.driver', 'C: UsersVardhanDownloadschromedriver.exe') tvarkyklė = new ChromeDriver ()} public static void navigate () {tvarkyklė .manage (). timeout (). implicitlyWait (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 ('prisijungimas')). Spustelėkite ()} @Test public static void Verify_login () {String pageTitle = driver.getTitle () Assert.assertEquals (pageTitle, 'Raskite skrydį: „Mercury Tours“) : ')} public static void closeBrowser () {driver.quit ()}}

Kaip matote, skirtingos funkcijos, kurias reikia išbandyti, pateikiamos atskirais metodais, kurie laukia iškvietimo. Šie metodai bus iškviesti iš kitos klasės, atsižvelgiant į metodo pavadinimo buvimą „Excel“ faile. Panašiai, norėdamas perskaityti „Excel“ failą ir atsiųsti rezultatus, parašiau dar vieną klasę. Abu jie rodomi žemiau.

Tai yra klasės failas, kuriame naudojami metodai.

pl / sql išimčių tvarkymas
paketas „KeyDriven“ viešosios klasės „DriverScript“ {public static void main (String [] args) meta išimtį {// „Excel“ failo kelio deklaravimas naudojant „Excel“ failo pavadinimą String sPath = 'C: UsersVardhanworkspaceSelenium Frameworks DemodataEngine.xlsx' // Čia mes perduodame „Excel“ kelią ir „SheetName“ kaip argumentus, kad galėtume prisijungti prie „Excel“ failo „ReadExcelData.setExcelFile“ („sPath“, „Sheet1“) // Šiuo metu „Excel“ eilutėms ir stulpeliams naudojamos kietojo kodavimo vertės kol kas stulpeliai // Vėlesniuose skyriuose šias sunkiai užkoduotas reikšmes pakeisime varibalais // Tai yra 3 stulpelio (Veiksmų raktinis žodis) reikšmių eilutės po eilutės (int iRow = 1iRow) reikšmių skaitymo ciklas<=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() } } } } 

Klasės failas, nuskaitantis „Excel“ reikšmes, yra toks.

paketas „KeywordDriven“ importas java.io.FileInputStream importuoti org.apache.poi.xssf.usermodel.XSSFSheet importuoti org.apache.poi.xssf.usermodel.XSSFWorkbook importuoti org.apache.poi.xssf.usermodel.XSSFCell viešoji klasė „ReadEiccelData“ {private static XSSFSheet ExcelWSheet private static XSSFWorkbook ExcelWBook private static XSSFCell Cell // Šis metodas skirtas nustatyti failo kelią ir atidaryti „Excel“ failą // Perduoti „Excel“ kelią ir „SheetName“ kaip šio metodo argumentus public static void setExcelFile (String Path, String SheetName) meta Išimtis {FileInputStream ExcelFile = new FileInputStream (Path) ExcelWBook = new XSSFWorkbook (ExcelFile) ExcelWSheet = ExcelWBook.getSheet (SheetName)} // Šis metodas skirtas nuskaityti bandymo duomenis iš „Excel“ langelio // Tuo mes perduodame parametrus / argumentus kaip eilutės numeris ir Col Num viešoji statinė eilutė getCellData (int RowNum, int ColNum) išmeta išimtį {Cell = ExcelWSheet.getRow (RowNum) .getCell (ColNum) eilutė CellData = Cell.getStringCellValue () grąžina CellData}}

Dabar pereikime prie šio „Selenium“ pagrindinio tinklaraščio paskutinės dalies, kur aš jums parodysiu, kaip sukurti „Hybrid Framework“.

Hibridinė sistema

Hibridinė sistema yra metodas, kai mes galime geriausiai panaudoti tiek duomenų valdomą, tiek raktiniais žodžiais pagrįstą seleno sistemą (-as). Naudodamiesi aukščiau pateiktais pavyzdžiais šiame tinklaraštyje, mes galime sukurti hibridinę struktūrą, išsaugodami vykdymo metodus „Excel“ faile (pagal raktinius žodžius) ir perduodami šiuos metodų pavadinimus „Java Reflection Class“ (duomenimis pagrįstas požiūris) užuot sukūręs Jei / kita kilpa „DriverScript“ klasėje.

Pažvelkite į modifikuotą „DriverScript“ klasę žemiau esančiame kodo fragmente.Čia vietoj kelių „If / Else“ kilpų naudojimo metodo pavadinimams iš „Excel“ failo nuskaityti naudojamas duomenimis pagrįstas metodas.

paketas „HybridFramework“ importuokite java.lang.reflect.Method viešąją klasę „DriverScriptJava“ {// Tai klasės objektas, deklaruojamas kaip „public static“ // Kad jį būtų galima naudoti už pagrindinio [] metodo ribų public static Actions actionKeywords public static String sActions // Tai atspindėjimo klasės objektas, deklaruojamas kaip „public static“ // Kad jį būtų galima naudoti už pagrindinio [] metodo ribų public static Method metodas [] public static void main (String [] args) meta išimtį {// „Excel“ failo kelio su „Excel“ failo pavadinimu deklaravimas String sPath = 'C: UsersVardhanworkspaceSelenium Frameworks DemodataEngine.xlsx' // Čia mes perduodame „Excel“ kelią ir „SheetName“, kad galėtume prisijungti prie „Excel“ failo // Šis metodas buvo sukurtas anksčiau ReadExcelData.setExcelFile (sPath, 'Sheet1') // „Excel“ eilutėms ir stulpeliams kol kas naudojamos sunkiai koduojamos reikšmės // Vėliau šias efektyviai užkoduotas reikšmes naudosime daug efektyviau // Tai yra skaitymo ciklas stulpelio (Veiksmo raktinis žodis) eilutės reikšmės by row // Tai reiškia, kad ši kilpa atliks visus veiksmus, paminėtus bandymo atvejui, skirtą bandymo veiksmų lapui (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

Norint geriau suprasti šią „Data Driven“, „Key Driven & Hybrid Driven“ pagrindų koncepciją, prašau pažiūrėti toliau pateiktą vaizdo įrašą.

„Selenium Framework“ naudojant „Java“ Seleno pamoka | „Selenium Training“ internetu

Tikiuosi, kad šis tinklaraštis buvo jums naudingas ir leido aiškiai suprasti, kas yra „Selenium“ sistema, kuo ji naudinga ir kaip sukurti savo kodo struktūrą naudojant šias 3 „Selenium“ sistemas. Stebėkite daugiau šios serijos tinklaraščių.

Jei norite išmokti seleno ir kurti karjerą bandymų srityje, peržiūrėkite mūsų interaktyvų internetą čia yra 24 * 7 palaikymas, kuris padės jums mokytis. Su „Selenium Framework“ susijusios sąvokos išsamiai aprėpiamos „Edureka“ kurse.

Turite mums klausimą? Prašau paminėti tai komentarų skiltyje ir mes su jumis susisieksime.