Apa itu Kerangka Selenium?
The Rangka Kerja Selenium adalah struktur kod yang membuat penyelenggaraan kod mudah dan cekap. Tanpa kerangka kerja, pengguna dapat meletakkan "kod" dan "data" di lokasi yang sama yang tidak dapat digunakan kembali atau dibaca. Kerangka kerja menghasilkan hasil yang bermanfaat seperti peningkatan penggunaan semula kod, mudah dibawa yang lebih tinggi, pengurangan kos penyelenggaraan skrip, pembacaan kod yang lebih baik, dll
Terdapat tiga jenis kerangka kerja yang dibuat oleh Selenium WebDriver untuk mengautomasikan kes ujian manual
- Rangka Kerja Ujian Berdasarkan Data
- Rangka Kerja Ujian Bergerak Kata Kunci
- Kerangka Ujian Hibrid
Rangka Kerja Berdasarkan Data di Selenium
Data Driven Framework di Selenium adalah kaedah memisahkan set data dari kes ujian. Setelah set data dipisahkan dari kes ujian, ia dapat diubahsuai dengan mudah untuk fungsi tertentu tanpa mengubah kod. Ini digunakan untuk mengambil kes ujian dan suite dari fail luaran seperti Excel, .csv, .xml atau beberapa jadual pangkalan data.
Untuk membaca atau menulis Excel, Apache menyediakan POI perpustakaan yang sangat terkenal. Perpustakaan ini cukup mampu membaca dan menulis format fail XLS dan XLSX Excel.
Untuk membaca fail XLS , pelaksanaan HSSF disediakan oleh perpustakaan POI.
Untuk membaca XLSX, pelaksanaan XSSF perpustakaan POI akan menjadi pilihan. Mari kaji pelaksanaan ini secara terperinci.
Kami sudah mengetahui tentang Pengujian Berdasarkan Data dalam tutorial kami sebelumnya
Rangka Kerja Didorong Kata Kunci di Selenium
Kerangka Kerja Kata Kunci di Selenium adalah kaedah yang digunakan untuk mempercepat pengujian automatik dengan memisahkan kata kunci untuk sekumpulan fungsi dan petunjuk umum. Semua operasi dan arahan yang akan dilakukan ditulis dalam beberapa fail luaran seperti helaian Excel. Pengguna dapat mengawal dan menentukan fungsi yang ingin mereka uji dengan mudah.
Inilah rupa kerangka lengkap
Seperti yang anda lihat, ini adalah kerangka 5 langkah. Mari kita pelajari secara berperingkat
Langkah 1)
- Skrip pemacu Execute.java akan memanggil ReadGuru99ExcelFile.java
- ReadGuru99ExcelFile.java mempunyai skrip POI untuk membaca data dari Excel
Langkah 2)
- ReadGuru99ExcelFile.java akan membaca data dari TestCase.xlsx
- Begini rupa helaian-
- Menurut kata kunci yang ditulis dalam fail Excel, kerangka kerja akan menjalankan operasi pada UI.
- Sebagai contoh, kita perlu mengklik butang 'Login'. Sejajar dengan itu, Excel kami akan mempunyai kata kunci 'Klik.' Sekarang AUT dapat memiliki ratusan butang di halaman, untuk mengenal pasti butang Login, di Excel kita akan memasukkan Nama Objek sebagai loginButton & jenis objek sebagai nama (lihat disorot baris pada gambar di atas). Jenis Objek boleh menjadi Xpath, nama CSS atau nilai lain
Langkah 3) ReadGuru99ExcelFile.java akan menyampaikan data ini ke skrip pemacu Execute.java
Langkah 4)
- Untuk semua elemen web UI kami, kami perlu membuat repositori objek di mana kami akan meletakkan pencari elemen mereka (seperti Xpath, nama, jalan CSS, nama kelas dll.)
- Execute.java (skrip pemacu kami) akan membaca keseluruhan Objek Repositori dan menyimpannya dalam pemboleh ubah
- Untuk membaca repositori objek ini, kita memerlukan kelas ReadObject yang mempunyai kaedah getObjectRepository untuk membacanya.
CATATAN: Anda mungkin berfikir mengapa kita perlu membuat repositori objek. Jawapannya membantu dalam penyelenggaraan kod. Sebagai contoh, kami menggunakan butang dengan nama = btnlogin dalam 10 kes ujian yang berbeza. Pada masa akan datang, pembangun memutuskan untuk menukar nama dari btnlogin untuk dihantar. Anda harus membuat perubahan dalam semua 10 kes ujian. Sekiranya terdapat repositori objek, anda akan membuat perubahan sekali sahaja di repositori.
Langkah 5)
- Pemandu akan menghantar data dari Excel & Object Repository ke kelas UIOperation
- Kelas UIOperation mempunyai fungsi untuk melakukan tindakan yang sesuai dengan kata kunci seperti KLIK, SETTEXT dll ... yang disebutkan dalam excel
- Kelas UIOperation adalah kelas Java yang mempunyai pelaksanaan sebenarnya kod untuk melakukan operasi pada elemen web
Projek yang lengkap akan kelihatan seperti-
Mari lihat contoh:
Senario Ujian
- Kami menjalankan 2 kes ujian
- Kes Ujian 1:
- Pergi http://demo.guru99.com/V4/
- Masukkan ID Pengguna
- Masukkan kata laluan
- Klik Tetapkan Semula
- Kes Ujian 2:
- Pergi http://demo.guru99.com/V4/
- Masukkan ID Pengguna
- Masukkan kata laluan
- Klik Log Masuk
objek.properties
url = http: //demo.guru99.com/V4/
nama pengguna = uid
kata laluan = kata laluan
tajuk = baron
log masukButton = btnLogin
resetButton = btnReset
BacaGuru99ExcelFile.java
pakej excelExportAndFileIO;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import org.apache.poi.hssf.usermodel.HSSFWorkbook;import org.apache.poi.ss.usermodel.Sheet;import org.apache.poi.ss.usermodel.Workbook;import org.apache.poi.xssf.usermodel.XSSFWorkbook;kelas awam ReadGuru99ExcelFile {public Sheet readExcel (String filePath, String fileName, String sheetName) melemparkan IOException {// Buat objek kelas Fail untuk membuka fail xlsxFail fail = Fail baru (filePath + "\\" + fileName);// Buat objek kelas FileInputStream untuk membaca fail excelFileInputStream inputStream = FileInputStream baru (fail);Buku kerja guru99Workbook = null;// Cari peluasan fail dengan membelah nama fail di pengganti dan hanya mendapatkan nama pelanjutanString fileExtensionName = fileName.substring (fileName.indexOf ("."));// Periksa keadaan jika fail tersebut adalah fail xlsxjika (fileExtensionName.equals (". xlsx")) {// Sekiranya ia adalah fail xlsx, buat objek kelas XSSFWorkbookguru99Workbook = XSSFWorkbook baru (inputStream);}// Periksa keadaan jika fail tersebut adalah fail xlslain jika (fileExtensionName.equals (". xls")) {// Sekiranya ia adalah fail xls, buat objek kelas XSSFWorkbookguru99Workbook = HSSFWorkbook baru (inputStream);}// Baca helaian di dalam buku kerja dengan namanyaLembaran guru99Sheet = guru99Workbook.getSheet (sheetName);pulangkan guru99Sheet;}}
BacaObjek.java
operasi pakej;import java.io.File;import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.util.Properti;kelas awam ReadObject {Properties p = Properties baru ();public Properties getObjectRepository () melemparkan IOException {// Baca fail repositori objekInputStream stream = FileInputStream baru (Fail baru (System.getProperty ("user.dir") + "\\ src \\ objek \\ object.properties"));// muatkan semua objekp.load (aliran);pulangan p;}}
UIOperasi.java
operasi pakej;import java.util.Properti;import org.openqa.selenium.By;import org.openqa.selenium.WebDriver;UIOperoperasian kelas awam {Pemacu WebDriver;UIOperasi awam (pemacu WebDriver) {this.driver = pemacu;}kekosongan awam melakukan (Properties p, String operasi, String objectName, String objectType, String value) membuang Pengecualian {System.out.println ("");tukar (operasi.toUpperCase ()) {kes "KLIK":// Lakukan klikdriver.findElement (this.getObject (p, objectName, objectType)). klik ();rehat;kes "SETTEXT":// Tetapkan teks pada kawalandriver.findElement (this.getObject (p, objectName, objectType)). sendKeys (nilai);rehat;kes "GOTOURL":// Dapatkan url permohonandriver.get (p.getProperty (nilai));rehat;kes "GETTEXT":// Dapatkan teks unsurdriver.findElement (this.getObject (p, objectName, objectType)). getText ();rehat;lalai:rehat;}}/ *** Cari elemen dengan menggunakan jenis dan nilai objek* @param p* @param objekNama* Jenis objek @param* @kembali* Pengecualian @throws* /peribadi Dengan getObject (Properties p, String objectName, String objectType) membuang Pengecualian {// Cari dengan xpathjika (objectType.equalsIgnoreCase ("XPATH")) {kembali By.xpath (p.getProperty (objectName));}// cari mengikut kelaslain jika (objectType.equalsIgnoreCase ("CLASSNAME")) {mengembalikan By.className (p.getProperty (objectName));}// cari dengan namalain jika (objectType.equalsIgnoreCase ("NAME")) {mengembalikan By.name (p.getProperty (objectName));}// Cari dengan csslain jika (objectType.equalsIgnoreCase ("CSS")) {kembali By.cssSelector (p.getProperty (objectName));}// cari dengan pautanlain jika (objectType.equalsIgnoreCase ("LINK")) {mengembalikan By.linkText (p.getProperty (objectName));}// cari dengan pautan separalain jika (objectType.equalsIgnoreCase ("PARTIALLINK")) {kembali By.partialLinkText (p.getProperty (objectName));} lain{membuang Pengecualian baru ("Jenis objek yang salah");}}}
ExecuteTest.java
pakej ujian Kes;import java.util.Properti;operasi import.ReadObject;operasi import.UIOperasi;import org.apache.poi.ss.usermodel.Row;import org.apache.poi.ss.usermodel.Sheet;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.annotations.Test;import excelExportAndFileIO.ReadGuru99ExcelFile;ExecuteTest kelas awam {@ Ujianujian kekosongan awamLogin () membuang Pengecualian {// TODO Kaedah penjanaan automatikWebDriver webdriver = FirefoxDriver baru ();Fail ReadGuru99ExcelFile = ReadGuru99ExcelFile baru ();Objek ReadObject = ReadObject baru ();Properties allObjects = object.getObjectRepository ();Operasi UIOperation = UIOperasi baru (pemacu web);// Baca lembaran kata kunciLembaran guru99Sheet = file.readExcel (System.getProperty ("user.dir") + "\\", "TestCase.xlsx", "KeywordFramework");// Cari bilangan baris dalam fail excelint rowCount = guru99Sheet.getLastRowNum () - guru99Sheet.getFirstRowNum ();// Buat gelung ke atas semua baris fail excel untuk membacanyauntuk (int i = 1; i" + row.getCell (0) .toString () + "Started");}}}}
Selepas pelaksanaan, output akan kelihatan seperti -
Muat turun Selenium Project Files untuk Demo dalam Tutorial ini
Kerangka Hibrid
Kerangka Hibrid di Selenium adalah konsep di mana kita menggunakan kelebihan kedua-dua kerangka yang didorong oleh Kata Kunci dan juga kerangka yang didorong oleh Data. Ini adalah kerangka yang mudah digunakan yang memungkinkan penguji manual membuat kes ujian dengan hanya melihat kata kunci, data ujian dan repositori objek tanpa pengekodan dalam kerangka.
Di sini untuk kata kunci, kami akan menggunakan fail Excel untuk mengekalkan kes ujian, dan untuk data ujian, kami dapat menggunakan data, penyedia kerangka Testng.
Di sini, dalam kerangka hibrid kami, kami tidak perlu mengubah apa-apa dalam kerangka kerja berdasarkan Kata Kunci, di sini kami hanya perlu mengganti fail ExecuteTest.java dengan fail HybridExecuteTest.java.
Fail HybridExecuteTest ini mempunyai semua kod untuk kata kunci yang didorong dengan konsep penyedia data.
Gambaran lengkap kerangka hibrid akan kelihatan seperti
HybridExecuteTest.java
pakej ujian Kes;import java.io.IOException;import java.util.Properti;operasi import.ReadObject;operasi import.UIOperasi;import org.apache.poi.ss.usermodel.Row;import org.apache.poi.ss.usermodel.Sheet;import org.openqa.selenium.WebDriver;import org.openqa.selenium.firefox.FirefoxDriver;import org.testng.annotations.DataProvider;import org.testng.annotations.Test;import excelExportAndFileIO.ReadGuru99ExcelFile;kelas awam HybridExecuteTest {WebDriver webdriver = null;@Test (dataProvider = "hybridData")public void testLogin (String testcaseName, String keyword, String objectName, String objectType, String value) melontarkan Pengecualian {// TODO Kaedah penjanaan automatikif (testcaseName! = null && testcaseName.length ()! = 0) {webdriver = FirefoxDriver baru ();}Objek ReadObject = ReadObject baru ();Properties allObjects = object.getObjectRepository ();Operasi UIOperation = UIOperasi baru (pemacu web);// Panggil melakukan fungsi untuk menjalankan operasi di UIoperasi.perform (allObjects, keyword, objectName,Jenis objek, nilai);}@DataProvider (nama = "hybridData")objek awam [] [] getDataFromDataprovider () melemparkan IOException {Objek [] [] objek = null;Fail ReadGuru99ExcelFile = ReadGuru99ExcelFile baru ();// Baca lembaran kata kunciLembaran guru99Sheet = file.readExcel (System.getProperty ("user.dir") + "\\", "TestCase.xlsx", "KeywordFramework");// Cari bilangan baris dalam fail excelint rowCount = guru99Sheet.getLastRowNum () - guru99Sheet.getFirstRowNum ();objek = Objek baru [rowCount] [5];untuk (int i = 0; iRingkasan:
- Kita boleh membuat tiga jenis kerangka ujian menggunakan Selenium WebDriver.
- Ini adalah rangka kerja Data Driven, Keyword Driven, dan Hybrid.
- Kami dapat mencapai kerangka kerja berdasarkan data menggunakan penyedia data TestNG.
- Dalam kerangka kata kunci, kata kunci ditulis dalam beberapa fail luaran seperti fail excel dan kod java akan memanggil fail ini dan melaksanakan kes ujian.
- Kerangka hibrid adalah gabungan kerangka kata kunci dan berdasarkan data.
Muat turun Selenium Project Files untuk Demo dalam Tutorial ini