Apa itu Kerangka Selenium?
The Selenium Kerangka adalah struktur kode yang membuat pemeliharaan kode mudah dan efisien. Tanpa kerangka kerja, pengguna dapat menempatkan "kode" dan "data" di lokasi yang sama yang tidak dapat digunakan kembali atau dibaca. Kerangka kerja menghasilkan hasil yang bermanfaat seperti peningkatan penggunaan kembali kode, portabilitas yang lebih tinggi, pengurangan biaya pemeliharaan skrip, keterbacaan kode yang lebih baik, dll.
Terutama ada tiga jenis kerangka kerja yang dibuat oleh Selenium WebDriver untuk mengotomatiskan kasus uji manual
- Kerangka Kerja Pengujian Berdasarkan Data
- Kerangka Kerja Pengujian Berdasarkan Kata Kunci
- Kerangka Uji Hibrid
Kerangka Data Didorong di Selenium
Kerangka Kerja Data Driven di Selenium adalah metode untuk memisahkan kumpulan data dari kasus uji. Setelah kumpulan data dipisahkan dari kasus uji, itu dapat dengan mudah dimodifikasi untuk fungsionalitas tertentu tanpa mengubah kodenya. Ini digunakan untuk mengambil kasus dan rangkaian pengujian dari file eksternal seperti Excel, .csv, .xml, atau beberapa tabel database.
Untuk membaca atau menulis Excel, Apache menyediakan POI perpustakaan yang sangat terkenal. Pustaka ini cukup mampu untuk membaca dan menulis format file XLS dan XLSX dari Excel.
Untuk membaca file XLS , implementasi HSSF disediakan oleh perpustakaan POI.
Untuk membaca XLSX, implementasi XSSF dari perpustakaan POI akan menjadi pilihan. Mari pelajari implementasi ini secara mendetail.
Kita sudah mempelajari tentang Pengujian Berdasarkan Data di tutorial sebelumnya
Kerangka Kerja Berbasis Kata Kunci di Selenium
Kerangka Kerja Berbasis Kata Kunci di Selenium adalah metode yang digunakan untuk mempercepat pengujian otomatis dengan memisahkan kata kunci untuk sekumpulan fungsi dan instruksi umum. Semua operasi dan instruksi yang akan dilakukan ditulis dalam beberapa file eksternal seperti lembar Excel. Pengguna dapat dengan mudah mengontrol dan menentukan fungsionalitas yang ingin mereka uji.
Seperti inilah tampilan framework lengkapnya
Seperti yang Anda lihat, ini adalah kerangka kerja 5 langkah. Mari kita pelajari secara rinci secara bertahap
Langkah 1)
- Skrip driver Execute.java akan memanggil ReadGuru99ExcelFile.java
- ReadGuru99ExcelFile.java memiliki skrip POI untuk membaca data dari Excel
Langkah 2)
- ReadGuru99ExcelFile.java akan membaca data dari TestCase.xlsx
- Seperti inilah tampilan lembarannya-
- Menurut kata kunci yang tertulis di file Excel, framework akan melakukan operasi pada UI.
- Misalnya, kita perlu mengklik tombol 'Login.' Sejalan dengan itu, Excel kita akan memiliki kata kunci 'Klik'. Sekarang AUT dapat memiliki ratusan tombol di halaman, untuk mengidentifikasi tombol Login, di Excel kita akan memasukkan Nama Objek sebagai loginButton & tipe objek sebagai nama (lihat baris yang disorot pada gambar di atas). Jenis Objek dapat berupa Xpath, CSS nama atau nilai lainnya
Langkah 3) ReadGuru99ExcelFile.java akan meneruskan data ini ke skrip driver Execute.java
Langkah 4)
- Untuk semua elemen web UI kami, kami perlu membuat repositori objek tempat kami akan menempatkan pelacak elemennya (seperti Xpath, nama, jalur CSS, nama kelas, dll.)
- Execute.java (skrip driver kami) akan membaca seluruh Object Repository dan menyimpannya dalam sebuah variabel
- Untuk membaca repositori objek ini, kita membutuhkan kelas ReadObject yang memiliki metode getObjectRepository untuk membacanya.
CATATAN: Anda mungkin berpikir mengapa kita perlu membuat repositori objek. Jawabannya membantu dalam pemeliharaan kode. Misalnya, kami menggunakan tombol dengan name = btnlogin dalam 10 kasus uji yang berbeda. Kedepannya, developer memutuskan untuk mengganti nama dari btnlogin menjadi submit. Anda harus membuat perubahan di semua 10 kasus pengujian. Dalam kasus repositori objek, Anda akan membuat perubahan hanya sekali dalam repositori.
Langkah 5)
- Pengemudi akan meneruskan data dari Excel & Object Repository ke kelas UIOperation
- Kelas UIOperation memiliki fungsi untuk melakukan tindakan yang sesuai dengan kata kunci seperti CLICK, SETTEXT dll… yang disebutkan di excel
- Kelas UIOperation adalah kelas Java yang memiliki implementasi kode sebenarnya untuk melakukan operasi pada elemen web
Proyek lengkap akan terlihat seperti-
Mari kita lihat contohnya:
Skenario Uji
- Kami sedang menjalankan 2 kasus uji
- Kasus Uji 1:
- Buka http://demo.guru99.com/V4/
- Masukkan ID Pengguna
- Masukkan kata kunci
- Klik Reset
- Kasus Uji 2:
- Buka http://demo.guru99.com/V4/
- Masukkan ID Pengguna
- Masukkan kata kunci
- Klik Login
object.properties
url = http: //demo.guru99.com/V4/
username = uid
kata sandi = kata sandi
title = barone
loginButton = btnLogin
resetButton = btnReset
ReadGuru99ExcelFile.java
paket excelExportAndFileIO;impor java.io.File;impor java.io.FileInputStream;impor java.io.IOException;impor org.apache.poi.hssf.usermodel.HSSFWorkbook;impor org.apache.poi.ss.usermodel.Sheet;impor org.apache.poi.ss.usermodel.Workbook;impor org.apache.poi.xssf.usermodel.XSSFWorkbook;public class ReadGuru99ExcelFile {public Sheet readExcel (String filePath, String fileName, String sheetName) melempar IOException {// Buat objek kelas File untuk membuka file xlsxFile file = File baru (filePath + "\\" + fileName);// Buat objek kelas FileInputStream untuk membaca file excelFileInputStream inputStream = FileInputStream baru (file);Buku kerja guru99Workbook = null;// Temukan ekstensi file dengan membagi nama file di substing dan hanya mendapatkan nama ekstensiString fileExtensionName = fileName.substring (fileName.indexOf ("."));// Periksa kondisi apakah file tersebut adalah file xlsxif (fileExtensionName.equals (". xlsx")) {// Jika ini adalah file xlsx maka buatlah objek kelas XSSFWorkbookguru99Workbook = XSSFWorkbook baru (inputStream);}// Periksa kondisi apakah file tersebut adalah file xlselse if (fileExtensionName.equals (". xls")) {// Jika ini adalah file xls maka buatlah objek kelas XSSFWorkbookguru99Workbook = HSSFWorkbook baru (inputStream);}// Baca sheet di dalam workbook dengan namanyaSheet guru99Sheet = guru99Workbook.getSheet (sheetName);kembali guru99Sheet;}}
ReadObject.java
operasi paket;impor java.io.File;impor java.io.FileInputStream;impor java.io.IOException;impor java.io.InputStream;import java.util.Properties;kelas publik ReadObject {Properti p = Properti baru ();Properti publik getObjectRepository () menampilkan IOException {// Baca file repositori objekArus InputStream = FileInputStream baru (File baru (System.getProperty ("user.dir") + "\\ src \\ object \\ object.properties"));// memuat semua objekp.load (aliran);kembali p;}}
UIOperation.java
operasi paket;import java.util.Properties;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;public class UIOperation {Driver WebDriver;public UIOperation (driver WebDriver) {this.driver = driver;}public void melakukan (Properti p, operasi String, String objectName, String objectType, nilai String) melempar Exception {System.out.println ("");switch (operation.toUpperCase ()) {kasus "KLIK":// Lakukan klikdriver.findElement (this.getObject (p, objectName, objectType)). click ();istirahat;kasus "SETTEXT":// Atur teks pada kontroldriver.findElement (this.getObject (p, objectName, objectType)). sendKeys (value);istirahat;kasus "GOTOURL":// Dapatkan url aplikasidriver.get (p.getProperty (nilai));istirahat;kasus "GETTEXT":// Dapatkan teks dari sebuah elemendriver.findElement (this.getObject (p, objectName, objectType)). getText ();istirahat;default:istirahat;}}/ *** Temukan elemen DENGAN menggunakan tipe dan nilai objek* @param p* @param objectName* @param objectType* @ kembali* @throws Exception* /private By getObject (Properti p, String objectName, String objectType) melempar Exception {// Temukan dengan xpathif (objectType.equalsIgnoreCase ("XPATH")) {return By.xpath (p.getProperty (objectName));}// temukan berdasarkan kelaselse if (objectType.equalsIgnoreCase ("CLASSNAME")) {return By.className (p.getProperty (objectName));}// temukan dengan namaelse if (objectType.equalsIgnoreCase ("NAME")) {return By.name (p.getProperty (objectName));}// Temukan dengan csselse if (objectType.equalsIgnoreCase ("CSS")) {return By.cssSelector (p.getProperty (objectName));}// temukan melalui tautanelse if (objectType.equalsIgnoreCase ("LINK")) {return By.linkText (p.getProperty (objectName));}// temukan melalui tautan parsialelse if (objectType.equalsIgnoreCase ("PARTIALLINK")) {return By.p PartialLinkText (p.getProperty (objectName));}lain{melempar Pengecualian baru ("Jenis objek salah");}}}
ExecuteTest.java
paket testCases;import java.util.Properties;operasi impor.ReadObject;operasi impor.UIOperation;impor org.apache.poi.ss.usermodel.Row;impor org.apache.poi.ss.usermodel.Sheet;import org.openqa.selenium.WebDriver;impor org.openqa.selenium.firefox.FirefoxDriver;import org.testng.annotations.Test;import excelExportAndFileIO.ReadGuru99ExcelFile;public class ExecuteTest {@Ujipublic void testLogin () melempar Exception {// TODO Rintisan metode yang dibuat secara otomatisWebDriver webdriver = new FirefoxDriver ();ReadGuru99ExcelFile file = new ReadGuru99ExcelFile ();ReadObject object = new ReadObject ();Properti allObjects = object.getObjectRepository ();Operasi UIOperation = new UIOperation (webdriver);// Baca lembar kata kunciLembar guru99Sheet = file.readExcel (System.getProperty ("user.dir") + "\\", "TestCase.xlsx", "KeywordFramework");// Temukan jumlah baris di file excelint rowCount = guru99Sheet.getLastRowNum () - guru99Sheet.getFirstRowNum ();// Buat loop di semua baris file excel untuk membacanyauntuk (int i = 1; i" + row.getCell (0) .toString () + "Started");}}}}
Setelah eksekusi, keluaran akan terlihat seperti -
Unduh File Proyek Selenium untuk Demo dalam Tutorial ini
Kerangka Hibrid
Hybrid Framework di Selenium adalah sebuah konsep dimana kami menggunakan keuntungan dari framework yang digerakkan oleh Kata Kunci dan juga kerangka kerja yang digerakkan oleh Data. Ini adalah kerangka kerja yang mudah digunakan yang memungkinkan penguji manual membuat kasus uji hanya dengan melihat kata kunci, data pengujian, dan repositori objek tanpa pengkodean dalam kerangka kerja.
Di sini untuk kata kunci, kami akan menggunakan file Excel untuk memelihara kasus uji, dan untuk data uji, kami dapat menggunakan data, penyedia kerangka kerja Testng.
Di sini, di framework hybrid kami, kami tidak perlu mengubah apa pun di framework yang digerakkan oleh kata kunci, di sini kami hanya perlu mengganti file ExecuteTest.java dengan file HybridExecuteTest.java.
File HybridExecuteTest ini memiliki semua kode untuk kata kunci yang didorong dengan konsep penyedia data.
Representasi gambar lengkap dari kerangka hybrid akan terlihat
HybridExecuteTest.java
paket testCases;impor java.io.IOException;import java.util.Properties;operasi impor.ReadObject;operasi impor.UIOperation;impor org.apache.poi.ss.usermodel.Row;impor org.apache.poi.ss.usermodel.Sheet;import org.openqa.selenium.WebDriver;impor org.openqa.selenium.firefox.FirefoxDriver;import org.testng.annotations.DataProvider;import org.testng.annotations.Test;import excelExportAndFileIO.ReadGuru99ExcelFile;public class HybridExecuteTest {WebDriver webdriver = null;@Test (dataProvider = "hybridData")public void testLogin (String testcaseName, String kata kunci, String objectName, String objectType, nilai String) melempar Exception {// TODO Rintisan metode yang dibuat secara otomatisif (testcaseName! = null && testcaseName.length ()! = 0) {webdriver = new FirefoxDriver ();}ReadObject object = new ReadObject ();Properti allObjects = object.getObjectRepository ();Operasi UIOperation = new UIOperation (webdriver);// Panggil fungsi perform untuk melakukan operasi pada UIoperation.perform (allObjects, keyword, objectName,objectType, nilai);}@DataProvider (name = "hybridData")public Object [] [] getDataFromDataprovider () melempar IOException {Objek [] [] objek = null;ReadGuru99ExcelFile file = new ReadGuru99ExcelFile ();// Baca lembar kata kunciLembar guru99Sheet = file.readExcel (System.getProperty ("user.dir") + "\\", "TestCase.xlsx", "KeywordFramework");// Temukan jumlah baris di file excelint rowCount = guru99Sheet.getLastRowNum () - guru99Sheet.getFirstRowNum ();objek = Objek baru [rowCount] [5];untuk (int i = 0; iRingkasan:
- Kita dapat membuat tiga jenis kerangka uji menggunakan Selenium WebDriver.
- Ini adalah kerangka kerja pengujian Berdasarkan Data, Didorong Kata Kunci, dan Hibrid.
- Kami dapat mencapai kerangka kerja Data-driven menggunakan penyedia data TestNG.
- Dalam kerangka kerja yang didorong kata kunci, kata kunci ditulis dalam beberapa file eksternal seperti file excel dan kode java akan memanggil file ini dan menjalankan kasus uji.
- Framework hybrid adalah campuran dari framework yang digerakkan oleh kata kunci dan yang digerakkan oleh data.
Unduh File Proyek Selenium untuk Demo dalam Tutorial ini