Membangun Kerangka Kerja Berbasis Data, Didorong Kata Kunci & Selenium Hibrid



Blog ini menjelaskan apa itu kerangka Selenium, manfaatnya, dan bagaimana mengimplementasikan kerangka kerja Data Driven, Kata Kunci Didorong & Hibrid di selenium.

Sebelumnya dalam seri ini telah memberi Anda paparan konsep dasar dalam pengujian Selenium.Namun, di blog ini, saya akan memberi tahu Anda cara menggunakan kerangka Selenium untuk mengoptimalkan struktur kode Anda dan ini akan membuat Anda semakin dekat untuk menjadi .

Apa itu Kerangka Selenium?

Kerangka selenium adalah struktur kode untuk membuat pemeliharaan kode lebih sederhana, dan keterbacaan kode lebih baik. Kerangka kerja melibatkan pemecahan seluruh kode menjadi potongan-potongan kode yang lebih kecil, yang menguji fungsionalitas tertentu.





Kode tersebut disusun sedemikian rupa sehingga 'kumpulan data' dipisahkan dari 'kasus uji' sebenarnya yang akan menguji fungsionalitas aplikasi web. Ia juga dapat disusun dengan cara di mana, kasus uji yang perlu dijalankan dipanggil (dipanggil) dari aplikasi eksternal (seperti .csv).

kode contoh python regresi logistik

Ada sejumlah framework di luar sana, tetapi 3 framework Selenium yang umum digunakan adalah:



Kerangka kerja ini akan dibahas dengan demo di blog ini. Tetapi sebelum melangkah lebih jauh, izinkan saya memberi tahu Anda mengapa kerangka Selenium perlu ada, dan manfaat apa yang akan Anda dapatkan dari menggunakannya.

Mengapa kita membutuhkan kerangka Selenium?

Tanpa kerangka kerja, akan ada satu kasus pengujian yang akan mencakup seluruh fungsi pengujian. Bagian yang menakutkan adalah, kasus uji tunggal ini memiliki kemampuan untuk memunculkan hingga jutaan baris kode. Jadi sangat jelas bahwa test case yang begitu besar akan sulit untuk dibaca. Bahkan jika Anda ingin mengubah fungsionalitas apa pun nanti, Anda akan kesulitan memodifikasi kodenya.

Sejak implementasi kerangka kerja, akan menghasilkan potongan kode yang lebih kecil tetapi banyak, ada berbagai manfaat.



Manfaat kerangka Selenium

  • Peningkatan penggunaan kembali kode
  • Keterbacaan kode yang lebih baik
  • Portabilitas yang lebih tinggi
  • Skrip yang dikurangipemeliharaan

Sekarang setelah Anda mengetahui dasar-dasar framework, izinkan saya menjelaskan masing-masing secara mendetail.

Kerangka Kerja Berbasis Data

Kerangka kerja Data Driven di Selenium adalah teknik memisahkan 'kumpulan data' dari 'kasus uji' (kode) yang sebenarnya. Kerangka kerja ini sepenuhnya bergantung pada data pengujian masukan. Data pengujian diumpankan dari sumber eksternal seperti file excel, file .CSV atau database apa pun.

data driven framework - selenium framework - edureka

Karena kasus uji terpisah dari kumpulan data, kami dapat dengan mudah mengubah kasus uji fungsionalitas tertentu tanpa membuat perubahan besar-besaran pada kode Anda. Misalnya, jika Anda ingin mengubah kode untuk fungsionalitas login, Anda dapat mengubahnya daripada harus juga mengubah bagian dependen lainnya dalam kode yang sama.

Selain itu, Anda juga dapat dengan mudah mengontrol berapa banyak data yang perlu diuji. Anda dapat dengan mudah meningkatkan jumlah parameter uji dengan menambahkan lebih banyak bidang nama pengguna dan kata sandi ke file excel (atau sumber lain).

Misalnya, jika saya harus memeriksa login ke halaman web, maka saya dapat menyimpan set kredensial nama pengguna dan kata sandi dalam file excel dan meneruskan kredensial ke kode untuk melakukan otomatisasi pada browser dalam file kelas Java yang terpisah.

Menggunakan Apache POI Dengan Selenium WebDriver

WebDriver tidak secara langsung mendukung membaca file excel. Oleh karena itu kami gunakan Apache POI untuk membaca / menulis ke dokumen Microsoft Office apa pun. Anda dapat mengunduh Apache POI (kumpulan file JAR) dari sini . Unduh file zip atau file tar sesuai kebutuhan Anda dan letakkan bersama dengan kumpulan Selenium JARs.

python def __init __ (sendiri)

Koordinasi antara kode utama dan kumpulan data akan diurus oleh Penyedia Data TestNG, yang merupakan pustaka yang hadir sebagai bagian dari file Apache POI JAR. Untuk tujuan demo, saya telah membuat file excel yang disebut 'LoginCredentials' di mana nama pengguna dan kata sandi telah disimpan di kolom yang berbeda.

Lihatlah kode di bawah ini untuk memahami kasus uji. Ini adalah kode sederhana untuk menguji fungsionalitas login aplikasi pemesanan penerbangan.

paket 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) melempar InterruptedException {System.setProperty ('webdriver.chrome.driver', 'C: UsersVardhanDownloadschromedriver.exe') driver = baru ChromeDriver () driver.get ('http://newtours.demoaut.com/') driver.findElement (By.name ('userName')). sendKeys (username) driver.findElement (By.name ('password' )). sendKeys (kata sandi) driver.findElement (By.name ('login')). ​​click () Thread.sleep (5000) Assert.assertTrue (driver.getTitle (). cocok ('Temukan Penerbangan: Mercury Tours: '),' Kredensial tidak valid ') System.out.println (' Login berhasil ')} @AfterMethod void ProgramTermination () {driver.quit ()} @DataProvider (name =' testdata ') public Object [] [] TestDa taFeed () {ReadExcelFile config = new ReadExcelFile ('C: UsersVardhanworkspaceSeleniumLoginCredentials.xlsx') int baris = config.getRowCount (0) Object [] [] credentials = new Object [baris] [2] untuk (int i = 0i

Jika Anda perhatikan dari atas, kami memiliki metode bernama 'TestDataFeed ()'. Dalam metode ini, saya telah membuat instance objek dari kelas lain bernama 'ReadExcelFile'. Saat membuat instance objek ini, saya telah memberi makan jalur file excel saya yang berisi data. Saya telah mendefinisikan lebih lanjut loop for untuk mengambil teks dari buku kerja excel.

Namun, untuk membaca data dari nomor sheet, nomor kolom dan nomor baris tertentu, panggilan dilakukan ke kelas 'ReadExcelFile'. Kode 'ReadExcelFile' saya ada di bawah.

paket DataDriven impor java.io.File impor java.io.FileInputStream import org.apache.poi.xssf.usermodel.XSSFSheet impor org.apache.poi.xssf.usermodel.XSSFWorkbook kelas publik ReadExcelFile {XSSFWorkbook wb XSSFSheet sheet public ReadExcelFile (String excelPath) {coba {File src = new File (excelPath) FileInputStream fis = new FileInputStream (src) wb = new XSSFWorkbook (fis)} tangkap (Pengecualian e) {System.out.println (e.getMessage ())}} publik String getData (int sheetnumber, int baris, int kolom) {sheet = wb.getSheetAt (sheetnumber) String data = sheet.getRow (baris) .getCell (kolom) .getStringCellValue () return data} public int getRowCount (int sheetIndex) { int baris = wb.getSheetAt (sheetIndex) .getLastRowNum () baris = baris + 1 baris kembali}}

Pertama perhatikan perpustakaan yang telah saya impor. Saya telah mengimpor Apache POI XSSF perpustakaan yang digunakan untuk membaca / menulis data ke file excel. Di sini, saya telah membuat konstruktor (objek dengan metode yang sama) untuk meneruskan nilai: nomor lembar, nomor baris, dan nomor kolom. Untuk memahami kerangka kerja ini dengan lebih baik, saya meminta Anda untuk melihat video di bawah ini, di mana saya telah menjelaskannya secara terstruktur.

Kerangka Data Didorong Di Selenium WebDriver | Tutorial Selenium

Sekarang mari beralih ke kerangka kerja, yaitu kerangka Kerja Berdasarkan Kata Kunci.

Kerangka Kerja Berbasis Kata Kunci

Kerangka kerja Berbasis Kata Kunci adalah teknik di mana semua operasi & instruksi yang akan dilakukan ditulis secara terpisah dari kasus uji yang sebenarnya. Kesamaannya dengan kerangka Data Driven adalah bahwa, operasi yang akan dilakukan disimpan lagi dalam file eksternal seperti lembar Excel.

Operasi yang saya bicarakan tidak lain adalah metode yang perlu dijalankan sebagai bagian dari kasus uji. Manfaat dengan kerangka kerja Berbasis Kata Kunci adalah Anda dapat dengan mudah mengontrol fungsi yang ingin Anda uji. Anda dapat menentukan metode yang menguji fungsionalitas aplikasi di file excel. Jadi, hanya nama metode yang ditentukan di excel yang akan diuji.

Misalnya, untuk masuk ke aplikasi web, kita dapat menulis beberapa metode dalam kasus uji utama, di mana setiap kasus uji akan menguji fungsionalitas tertentu. Untuk instantiating driver browser mungkin ada satu metode, untuk menemukan kolom nama pengguna & kata sandi, mungkin ada metode, untuk menavigasi ke halaman web mungkin ada metode lain, dll.

Lihatlah kode di bawah ini untuk memahami bagaimana kerangka kerja terlihat. Baris-baris yang dikomentari pada kode di bawah ini berfungsi sebagai penjelasan jika Anda tidak mengerti.

program penjadwalan round robin di c
paket 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 tindakan kelas publik {public static WebDriver driver public static void openBrowser () {System.setProperty ('webdriver.chrome.driver', 'C: UsersVardhanDownloadschromedriver.exe') driver = new ChromeDriver ()} navigasi public static void () {driver .manage (). timeouts (). 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 ('login')). ​​Click ()} @Test public static void verifikasi_login () {String pageTitle = driver.getTitle () Assert.assertEquals (pageTitle, 'Temukan Penerbangan: Mercury Tours : ')} public static void closeBrowser () {driver.quit ()}}

Seperti yang Anda lihat, fungsi berbeda yang perlu diuji ada dalam metode terpisah yang menunggu untuk dipanggil. Sekarang, metode ini akan dipanggil dari Kelas lain, berdasarkan keberadaan nama metode di file excel. Dan juga, untuk membaca file excel, dan mengirim kembali hasilnya, saya telah menulis Class lain. Keduanya ditampilkan di bawah.

File kelas yang menjalankan metode, apakah ini.

paket KeywordDriven public class DriverScript {public static void main (String [] args) throws Exception {// Mendeklarasikan jalur file Excel dengan nama file Excel String sPath = 'C: UsersVardhanworkspaceSelenium Frameworks DemodataEngine.xlsx' // Di sini kita melewati jalur Excel dan SheetName sebagai argumen untuk terhubung dengan file Excel ReadExcelData.setExcelFile (sPath, 'Sheet1') // Nilai hard code digunakan untuk baris & kolom Excel untuk saat ini // Nilai hard code digunakan untuk baris Excel & kolom untuk saat ini // Di bab selanjutnya kita akan mengganti nilai hard code ini dengan varibales // Ini adalah loop untuk membaca nilai kolom 3 (Action Keyword) baris demi baris untuk (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() } } } } 

Dan file kelas yang membaca nilai-nilai Excel adalah ini.

paket KeywordDriven impor java.io.FileInputStream impor org.apache.poi.xssf.usermodel.XSSFSheet impor org.apache.poi.xssf.usermodel.XSSFWorkbook import org.apache.poi.xssf.usermodel.XSSFCell public class ReadExcelData {private static XSSFSheet ExcelWSheet private static XSSFWorkbook ExcelWBook private static XSSFCell Cell // Metode ini adalah untuk mengatur jalur File dan untuk membuka file Excel // Lewati Path Excel dan SheetName sebagai Argumen ke metode ini public static void setExcelFile (String Path, String SheetName) melempar Pengecualian {FileInputStream ExcelFile = new FileInputStream (Path) ExcelWBook = new XSSFWorkbook (ExcelFile) ExcelWSheet = ExcelWBook.getSheet (SheetName)} // Metode ini untuk membaca data uji dari sel Excel // Dalam hal ini kita meneruskan parameter / argumen sebagai Row Num dan Col Num public static String getCellData (int RowNum, int ColNum) melempar Exception {Cell = ExcelWSheet.getRow (RowNum) .getCell (ColNum) String CellData = Cell.getStringCellValue () return CellData}}

Sekarang, mari beralih ke bagian terakhir dari blog kerangka kerja Selenium ini, di mana saya akan menunjukkan kepada Anda cara membangun kerangka kerja Hibrid.

Kerangka hybrid

Framework hybrid adalah teknik di mana kita dapat memanfaatkan framework Selenium Data Driven & Keyword Driven dengan sebaik-baiknya. Menggunakan contoh yang ditunjukkan di atas di blog ini, kita dapat membangun kerangka kerja Hibrid dengan menyimpan metode untuk dieksekusi dalam file excel (pendekatan yang didorong kata kunci) dan meneruskan nama metode ini ke Kelas Refleksi Java (pendekatan berbasis data) alih-alih membuat file Jika / Lain loop di kelas 'DriverScript'.

Lihatlah kelas 'DriverScript' yang dimodifikasi dalam potongan kode di bawah ini.Di sini, alih-alih menggunakan beberapa loop If / Else, pendekatan berbasis data digunakan untuk membaca nama metode dari file excel.

paket HybridFramework import java.lang.reflect.Method public class DriverScriptJava {// Ini adalah objek kelas, dideklarasikan sebagai 'public static' // Sehingga dapat digunakan di luar lingkup metode [] utama public static Actions actionKeywords public static String sActions // Ini adalah objek kelas refleksi, dideklarasikan sebagai 'public static' // Sehingga dapat digunakan di luar lingkup main [] metode metode public static Metode [] public static void main (String [] args) melempar Exception {// Mendeklarasikan jalur file Excel dengan nama file Excel String sPath = 'C: UsersVardhanworkspaceSelenium Frameworks DemodataEngine.xlsx' // Di sini kita meneruskan jalur Excel dan SheetName untuk terhubung dengan file Excel // Metode ini telah dibuat sebelumnya ReadExcelData.setExcelFile (sPath, 'Sheet1') // Nilai hard code digunakan untuk baris & kolom Excel untuk saat ini // Nanti, kita akan menggunakan nilai hard code ini dengan lebih efisien // Ini adalah loop untuk membaca nilai baris kolom (Kata Kunci Tindakan) oleh baris // Artinya loop ini akan menjalankan semua langkah yang disebutkan untuk kasus uji di lembar Langkah Tes untuk (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

Untuk memahami konsep kerangka kerja Berdasarkan Data, Didorong Kata Kunci & Didorong Hibrid dengan lebih baik, saya meminta Anda untuk menonton video di bawah ini.

Kerangka Selenium menggunakan Java | Tutorial Selenium | Pelatihan Selenium Online

Saya berharap blog ini bermanfaat bagi Anda dan memberi Anda pemahaman yang jelas tentang apa itu kerangka Selenium, bagaimana itu bermanfaat dan bagaimana membangun struktur kode Anda menggunakan 3 kerangka Selenium ini. Pantau terus lebih banyak blog dalam seri ini.

Jika Anda ingin belajar Selenium dan membangun karir di domain pengujian, lihat interaktif kami, langsung online di sini, yang dilengkapi dengan dukungan 24 * 7 untuk memandu Anda selama periode belajar Anda. Konsep yang terkait dengan 'Kerangka Selenium' memiliki cakupan mendalam dalam kursus Edureka.

Ada pertanyaan untuk kami? Harap sebutkan di bagian komentar dan kami akan menghubungi Anda kembali.