Datu, atslēgvārdu un hibrīda selēna ietvara veidošana



Šajā emuārā ir paskaidrots, kas ir Selenium ietvars, tā priekšrocības un kā selenā ieviest Data Driven, Key Driven & Hybrid ietvarus.

Iepriekšējais šajā sērijā jūs esat iepazinies ar selēna testēšanas pamatjēdzieniem.Tomēr šajā emuārā es jums pastāstīšu, kā izmantot Selenium ietvaru, lai optimizētu kodu struktūru, un tas tuvinās jūs, lai kļūtu par .

Kas ir selēna ietvars?

Selēna ietvars ir koda struktūra, kas atvieglo koda uzturēšanu un koda lasāmību. Sistēma ietver visa koda sadalīšanu mazākos koda gabalos, kas pārbauda noteiktu funkcionalitāti.





Kods ir strukturēts tā, ka “datu kopa” tiek atdalīta no faktiskā “testa gadījuma”, kas pārbaudīs tīmekļa lietojumprogrammas funkcionalitāti. To var arī strukturēt tādā veidā, ka izpildāmie pārbaudes gadījumi tiek izsaukti (izsaukti) no ārējas lietojumprogrammas (piemēram, .csv).

Ir vairākas ietvarstruktūras, taču 3 parasti izmantotās selēna ietvarstruktūras ir:



Šīs sistēmas tiks apspriestas ar demonstrāciju šajā emuārā. Bet pirms došanās tālāk, ļaujiet man pastāstīt, kāpēc ir jābūt selēna ietvaram un kādus ieguvumus jūs gūsiet, izmantojot tos.

kā iegūt masīva javascript garumu

Kāpēc mums ir nepieciešams selēna ietvars?

Ja nebūs izveidota sistēma, būs viens testa gadījums, kas aptvers visu testa funkcionalitāti. Baisā daļa ir tā, ka šis vienīgais testa gadījums spēj paaugstināties līdz miljonam koda rindiņu. Tāpēc ir diezgan skaidrs, ka tik milzīgu testa gadījumu būs grūti lasīt. Pat ja vēlaties vēlāk mainīt kādu funkcionalitāti, koda modificēšana jums būs grūta.

Tā kā ietvara ieviešana radīs mazākus, bet vairākus koda fragmentus, ir dažādas priekšrocības.



Selēna karkasa priekšrocības

  • Palielināta koda atkārtota izmantošana
  • Uzlabota koda lasāmība
  • Lielāka pārnesamība
  • Samazināts skriptsuzturēšana

Tagad, kad jūs zināt pamatu pamatus, ļaujiet man detalizēti paskaidrot katru no tiem.

Datu vadīta sistēma

Datu vadīts ietvars selēnā ir paņēmiens, kā atdalīt “datu kopu” no faktiskā “testa gadījuma” (koda). Šī sistēma ir pilnībā atkarīga no ievades testa datiem. Testa dati tiek piegādāti no ārējiem avotiem, piemēram, Excel faila, .CSV faila vai jebkuras datu bāzes.

datu vadīts ietvars - selēna ietvars - edureka

Tā kā testa gadījums ir atdalīts no datu kopas, mēs varam viegli modificēt noteiktas funkcionalitātes testa gadījumu, neveicot vairumtirdzniecības izmaiņas jūsu kodā. Piemēram, ja vēlaties modificēt pieteikšanās funkcionalitātes kodu, varat to modificēt tikai tā vietā, lai modificētu visas citas atkarīgās daļas tajā pašā kodā.

Bez tam jūs varat arī viegli kontrolēt, cik daudz datu jāpārbauda. Jūs varat viegli palielināt testa parametru skaitu, Excel failam (vai citiem avotiem) pievienojot vairāk lietotājvārda un paroles lauku.

Piemēram, ja man jāpārbauda pieteikšanās tīmekļa lapā, tad es varu saglabāt lietotājvārda un paroles akreditācijas datu kopu Excel failā un nodot akreditācijas datus kodam, lai pārlūkprogrammā veiktu automatizāciju atsevišķā Java klases failā.

Apache POI izmantošana ar Selenium WebDriver

WebDriver tieši neatbalsta Excel failu lasīšanu. Tāpēc mēs izmantojam Apache IP lasīšanai / rakstīšanai uz jebkuru Microsoft Office dokumentu. Apache POI (JAR failu kopu) varat lejupielādēt no šeit . Lejupielādējiet zip failu vai darvas failu atbilstoši savām prasībām un ievietojiet tos kopā ar Selenium JAR komplektu.

Par galvenā koda un datu kopas koordinēšanu rūpēsies TestNG datu nodrošinātāji, kas ir bibliotēka, kas nāk kā daļa no Apache POI JAR failiem. Demonstrācijas nolūkos esmu izveidojis Excel failu ar nosaukumu “LoginCredentials”, kurā lietotājvārdi un paroles ir saglabāti dažādās kolonnās.

Apskatiet zemāk esošo kodu, lai saprastu testa gadījumu. Tas ir vienkāršs kods, lai pārbaudītu lidojumu rezervēšanas lietojumprogrammas pieteikšanās funkcionalitāti.

pakete DataDriven import org.openqa.selenium.Be importējot org.openqa.selenium.chrome.ChromeDriver importēt org.testng.Assert import org.testng.annotations.AfterMethod importēt org.testng.annotations.DataProvider importēt org.testng.annotations.Test public class DDTExcel {ChromeDriver driver @Test (dataProvider = 'testdata') public void DemoProject (virknes lietotājvārds, virknes parole) met InterruptedException {System.setProperty ('webdriver.chrome.driver', 'C: UsersVardhanDownloadschromedriver.exe') draiveris = jauns ChromeDriver () driver.get ('http://newtours.demoaut.com/') driver.findElement (By.name ('userName')). sendKeys (lietotājvārds) driver.findElement (By.name ('parole') )). sendKeys (parole) driver.findElement (By.name ('login')). ​​noklikšķiniet () Thread.sleep (5000) Assert.assertTrue (driver.getTitle (). atbilst ('Atrast lidojumu: Mercury Tours: '),' Nederīgi akreditācijas dati ') System.out.println (' Pieteikšanās veiksmīga ')} @AfterMethod void ProgramTermination () {driver.quit ()} @DataProvider (name =' testdata ') public Object [] [] TestDa taFeed () {ReadExcelFile config = new ReadExcelFile ('C: UsersVardhanworkspaceSeleniumLoginCredentials.xlsx') int rindas = config.getRowCount (0) objekts [] [] akreditācijas dati = jauns objekts [rindas] [2] domēnam (int i = 0i

Ja pamanījāt no augšas, mums ir metode ar nosaukumu “TestDataFeed ()”. Šajā metodē esmu izveidojis citas klases objekta gadījumu ar nosaukumu “ReadExcelFile”. Instancējot šo objektu, esmu pabeidzis sava Excel faila ceļu, kurā ir dati. Es esmu tālāk definējis for for loop, lai izgūtu tekstu no Excel darbgrāmatas.

Bet, lai nolasītu datus no norādītās lapas numura, kolonnas numura un rindas numura, tiek veikti izsaukumi uz “ReadExcelFile” klasi. Manas “ReadExcelFile” kods ir zemāk.

pakete DataDriven import java.io.File importēt java.io.FileInputStream importēt org.apache.poi.xssf.usermodel.XSSFSheet importēt org.apache.poi.xssf.usermodel.XSSFWorkbook public class ReadExcelFile {XSSFWorkbook wb XSSFxFile excelPath) {mēģiniet {File src = new File (excelPath) FileInputStream fis = new FileInputStream (src) wb = new XSSFWorkbook (fis)} catch (izņēmums e) {System.out.println (e.getMessage ())}} public Virknes getData (int tabulas numurs, int rinda, int kolonna) {sheet = wb.getSheetAt (sheetnumber) Stīgas dati = sheet.getRow (rinda) .getCell (kolonna) .getStringCellValue () atgriešanās dati} public int getRowCount (int sheetIndex) { int rinda = wb.getSheetAt (sheetIndex) .getLastRowNum () rinda = rinda + 1 atgriešanās rinda}}

Vispirms ņemiet vērā bibliotēkas, kuras esmu importējis. Esmu importējis Apache IP XSSF bibliotēkas, kuras tiek izmantotas datu lasīšanai / rakstīšanai, lai izceltu failus. Šeit esmu izveidojis konstruktoru (tās pašas metodes objektu), lai nodotu vērtības: lapas numurs, rindas numurs un kolonnas numurs. Lai labāk izprastu šo ietvaru, lūdzu, izlasiet tālāk redzamo videoklipu, kur es to strukturēti izskaidroju.

Ar datiem pamatota sistēma selēna WebDriver | Selēna apmācība

Tagad pāriesim pie ietvara, t.i., uz atslēgvārdiem balstīta ietvara.

Atslēgvārdu vadīta sistēma

Atslēgvārdu vadīts ietvars ir paņēmiens, kurā visas veicamās darbības un instrukcijas tiek rakstītas atsevišķi no faktiskā testa gadījuma. Līdzība ar datu vadāmo ietvaru ir tāda, ka veicamās operācijas atkal tiek glabātas ārējā failā, piemēram, Excel lapā.

Darbības, par kurām es runāju, nav nekas cits kā metodes, kas jāveic kā daļa no testa gadījuma. Atslēgvārdu vadīta ietvara priekšrocība ir tā, ka jūs varat viegli kontrolēt pārbaudāmās funkcijas. Excel failā varat norādīt metodes, kas pārbauda lietojumprogrammas funkcionalitāti. Tādējādi tiks pārbaudīti tikai tie Excel nosaukumā norādītie metožu nosaukumi.

Piemēram, lai pieteiktos tīmekļa lietojumprogrammā, galvenajā testa gadījumā mēs varam uzrakstīt vairākas metodes, kurās katrs testa gadījums pārbaudīs noteiktu funkcionalitāti. Pārlūkprogrammas draivera instantēšanai var būt viena metode, lietotājvārda un paroles lauku atrašanai var būt metodes, navigācijai uz tīmekļa lapu var būt cita metode utt.

Apskatiet zemāk esošo kodu, lai saprastu, kā sistēma izskatās. Rindas, kuras ir komentētas zemāk esošajā kodā, kalpo kā skaidrojums, ja nesaprotat.

pakete KeywordDriven importēt org.openqa.selenium.chrome.ChromeDriver importēt org.testng.Assert import org.testng.annotations.Test importēt java.util.concurrent.TimeUnit import org.openqa.selenium.Be importējot org.openqa.selenium.WebDriver public class Actions {public static WebDriver draiveris public static void openBrowser () {System.setProperty ('webdriver.chrome.driver', 'C: UsersVardhanDownloadschromedriver.exe') draiveris = new ChromeDriver ()} public static void navigate () {draiveris .manage (). taimauti (). 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 ('pieteikšanās')).. Noklikšķiniet ()} @Test public static void verify_login () {String pageTitle = driver.getTitle () Assert.assertEquals (pageTitle, 'Atrast lidojumu: Mercury Tours : ')} public static void closeBrowser () {draiveris.iziet ()}}

Kā redzat, dažādās pārbaudāmās funkcijas ir atsevišķās metodēs, kuras gaida izsaukšanu. Tagad šīs metodes tiks izsauktas no citas klases, pamatojoties uz metodes nosaukuma klātbūtni Excel failā. Un līdzīgi, lai lasītu Excel failu un nosūtītu atpakaļ rezultātus, esmu uzrakstījis citu klasi. Abi no tiem ir parādīti zemāk.

kādi ir ierobežojumi sql

Klases fails, kurā tiek izmantotas metodes, ir šāds.

pakete KeywordDriven public class DriverScript {public static void main (String [] args) throws Exception {// Deklarējot Excel faila ceļu ar Excel faila nosaukumu String sPath = 'C: UsersVardhanworkspaceSelenium Frameworks DemodataEngine.xlsx' // Šeit mēs nododam Excel ceļu un SheetName kā argumentus, lai izveidotu savienojumu ar Excel failu ReadExcelData.setExcelFile (sPath, 'Sheet1') // Pašlaik Excel rindām un kolonnām tiek izmantotas cietās kodēšanas vērtības // Excel rindā tiek izmantotas cietās kodēšanas vērtības & kolonnas pašlaik // Vēlākajās nodaļās mēs aizstāsim šīs stingri kodētās vērtības ar varibales // Šī ir cilpa, lai lasītu 3. kolonnas (Darbības atslēgvārds) vērtības rindā pēc rindas (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() } } } } 

Klases fails, kas nolasa Excel vērtības, ir šāds.

pakete KeywordDriven importēt java.io.FileInputStream importēt org.apache.poi.xssf.usermodel.XSSFSheet importēt org.apache.poi.xssf.usermodel.XSSFWorkbook importēt org.apache.poi.xssf.usermodel.XSSFCell public class ReadEiccelData {private static XSSFSheet ExcelWSheet private static XSSFWorkbook ExcelWBook private static XSSFCell Cell // Šī metode ir iestatīta faila ceļš un jāatver Excel fails // Pass Excel Path and SheetName kā argumenti šai metodei public static void setExcelFile (virknes ceļš, virknes lapas nosaukums) izmet Izņēmums {FileInputStream ExcelFile = new FileInputStream (Path) ExcelWBook = new XSSFWorkbook (ExcelFile) ExcelWSheet = ExcelWBook.getSheet (SheetName)} // Šī metode ir testa datu nolasīšana no Excel šūnas // Šajā mēs nododam parametrus / argumentus kā Row Num un Col Num publiskā statiskā virkne getCellData (int RowNum, int ColNum) izmet izņēmumu {Cell = ExcelWSheet.getRow (RowNum) .getCell (ColNum) String CellData = Cell.getStringCellValue () return CellData}}

Pārejam uz šī Selenium ietvaru emuāra pēdējo daļu, kur es jums parādīšu, kā izveidot hibrīda ietvaru.

Hibrīds ietvars

Hibrīdais ietvars ir paņēmiens, kurā mēs varam vislabāk izmantot gan ar datiem pamatotu, gan ar atslēgvārdiem balstītu selēna ietvaru (-us). Izmantojot šajā emuārā iepriekš parādītos piemērus, mēs varam izveidot hibrīda ietvaru, saglabājot izpildāmās metodes Excel failā (ar atslēgvārdiem balstīta pieeja) un nododot šo metožu nosaukumus Java refleksijas klase (ar datiem pamatota pieeja) tā vietā, lai izveidotu Ja / Cits cilpa “DriverScript” klasē.

Apskatiet modificēto “DriverScript” klasi zemāk esošajā koda fragmentā.Lūk, tā vietā, lai izmantotu vairākas If / Else cilpas, metožu nosaukumu lasīšanai no Excel faila tiek izmantota ar datiem pamatota pieeja.

pakete HybridFramework importējiet java.lang.reflect.Method publiskā klase DriverScriptJava {// Šis ir klases objekts, kas deklarēts kā 'public static' // Lai to varētu izmantot ārpus galvenās [] metodes darbības jomas public static Actions actionKeywords public static String sActions // Šis ir refleksijas klases objekts, kas deklarēts kā “public static” // Lai to varētu izmantot ārpus galvenās [] metodes darbības jomas public static Method method [] public static void main (String [] args) izmet izņēmumu {// Excel faila ceļa deklarēšana ar Excel faila nosaukumu String sPath = 'C: UsersVardhanworkspaceSelenium Frameworks DemodataEngine.xlsx' // Šeit mēs nododam Excel ceļu un SheetName, lai izveidotu savienojumu ar Excel failu // Šī metode tika izveidots iepriekš ReadExcelData.setExcelFile (sPath, 'Sheet1') // Pagaidām Excel rindām un kolonnām tiek izmantotas cietās kodēšanas vērtības // Vēlāk šīs cietās kodēšanas vērtības izmantosim daudz efektīvāk // Šī ir cilpa lasīšanai kolonnas (Darbības atslēgvārds) rindas vērtības pēc rindas // Tas nozīmē, ka šī cilpa veiks visas darbības, kas minētas testa gadījumam lapā Testa darbības: (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

Lai labāk izprastu šo ar datiem pamatotu, atslēgvārdiem un hibrīdiem vadītu ietvaru koncepciju, es lūdzu noskatīties zemāk redzamo videoklipu.

Selenium Framework, izmantojot Java | Selēna apmācība Selēna apmācība tiešsaistē

Es ceru, ka šis emuārs jums bija noderīgs un sniedza skaidru izpratni par to, kas ir Selenium ietvars, cik tas ir izdevīgi un kā izveidot savu koda struktūru, izmantojot šos 3 Selenium ietvarus. Sekojiet līdzi citiem šīs sērijas emuāriem.

Ja vēlaties uzzināt selēnu un veidot karjeru testēšanas jomā, apskatiet mūsu interaktīvo tiešsaistes tiešraidi šeit ir pieejams 24 * 7 atbalsts, kas palīdzēs jums visu mācību laiku. Jēdzieni, kas saistīti ar “Selenium Framework”, ir padziļināti atspoguļoti Edureka kursā.

Vai mums ir jautājums? Lūdzu, pieminējiet to komentāru sadaļā, un mēs ar jums sazināsimies.