Tutorial Sikuli untuk Selenium Otomatisasi
Di mana Sikuli berada Selenium?
Sikuli adalah alat otomasi pengujian berbasis GUI sumber terbuka. Alat ini terutama digunakan untuk berinteraksi dengan elemen halaman web dan menangani popup berbasis Windows. Sikuli menggunakan teknik “Pengenalan Gambar” dan “Kontrol GUI” untuk berinteraksi dengan elemen halaman web dan popup Windows. Di Sikuli, semua elemen web diambil sebagai gambar dan disimpan di dalam proyek.
Cara menggunakan Sikuli dengan Selenium Driver web
Sikuli dapat diintegrasikan dengan webdriver Selenium menggunakan file Sikuli JAR.
Urutan di bawah ini adalah daftar langkah-langkah untuk mengkonfigurasi Sikuli dengan Selenium webdriver.
Langkah 1) Unduh file Sikuli JAR dari URL di bawah ini, dan ekstrak isi file ZIP ke dalam folder.
https://mvnrepository.com/artifact/com.sikulix/sikulixapi/2.0.5
Langkah 2) Buat proyek JAVA baru di Eclipse dan tambahkan file JAR ke jalur build, bersama dengan file jar Selenium menggunakan Klik Kanan pada proyek -> Build Path -> Configure Build Path
Setelah Anda menambahkan file JAR ke jalur pembangunan proyek, kelas yang disediakan oleh Sikuli dapat digunakan.
Kelas layar di Sikuli
Kelas Screen merupakan kelas dasar untuk semua metode yang disediakan oleh Sikuli. Kelas Screen berisi metode yang telah ditetapkan sebelumnya untuk semua operasi yang umum dilakukan pada elemen layar seperti klik, klik ganda, memberikan masukan ke kotak teks, mengarahkan kursor, dll. Berikut ini adalah daftar metode yang umum digunakan yang disediakan oleh kelas Screen.
metode | Description | Sintaksis |
---|---|---|
Klik | Metode ini digunakan untuk mengklik elemen di layar menggunakan nama gambar sebagai parameternya. | Layar s = Layar baru();
s.klik(“QA.png”); |
klik ganda | Metode ini digunakan untuk mengklik dua kali pada suatu elemen. Metode ini menerima nama gambar sebagai parameter. | Layar s = Layar baru();
s.doubleClick("QA.png"); |
Tipe | Metode ini digunakan untuk memberikan nilai masukan pada suatu elemen. Ia menerima nama gambar dan teks untuk dikirim sebagai parameter. |
s.type(“QA.png”,”TEKS”); |
Melayang-layang | Metode ini digunakan untuk mengarahkan kursor ke suatu elemen. Ia menerima nama gambar sebagai parameter. |
s.hover(“QA.png”); |
Menemukan | Metode ini digunakan untuk menemukan elemen tertentu di layar. Ia menerima nama gambar sebagai parameter. |
s.menemukan(“QA.png”); |
Kelas pola di Sikuli
Kelas pola digunakan untuk mengaitkan file gambar dengan atribut tambahan untuk mengidentifikasi elemen secara unik. Dibutuhkan jalur gambar sebagai parameter.
Pola p = Pola baru("Jalur gambar");
Berikut ini adalah metode kelas Pola yang paling umum digunakan.
metode | Description | Sintaksis |
---|---|---|
dapatkan Nama File | Mengembalikan nama file yang terdapat dalam objek Pola. |
Pola p = Pola baru(“D:\Demo\QA.png”); String nama file = p.getFileName(); |
mirip | Metode ini mengembalikan objek Pola baru dengan kesamaan yang disetel ke nilai tertentu. Ia menerima nilai kesamaan antara 0 hingga 1 sebagai parameter. Sikuli mencari semua elemen yang termasuk dalam rentang kesamaan yang ditentukan dan mengembalikan objek pola baru. |
Pola p1 = p.similar(0.7f); |
Tepat | Metode ini mengembalikan objek pola baru dengan kesamaan yang disetel ke 1. Metode ini hanya mencari kecocokan persis dari elemen yang ditentukan. |
Pola p1 = p.exact(); |
Contoh Kode untuk Upload File menggunakan Sikuli
Kode di bawah ini menjelaskan penggunaan Sikuli untuk upload file Firefox.
package com.sikuli.demo; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.sikuli.script.FindFailed; import org.sikuli.script.Pattern; import org.sikuli.script.Screen; import org.openqa.selenium.chrome.ChromeDriver; public class SikuliDemo { public static void main(String[] args) throws FindFailed { System.setProperty("webdriver.chrome.driver", "D:\\chromedriver.exe"); String filepath = "D:\\Guru99Demo\\Files\\"; String inputFilePath = "D:\\Guru99Demo\\Files\\"; Screen s = new Screen(); Pattern fileInputTextBox = new Pattern(filepath + "FileTextBox.PNG"); Pattern openButton = new Pattern(filepath + "OpenButton.PNG"); WebDriver driver; // Open Chrome browser driver = new ChromeDriver(); driver.get("https://demo.guru99.com/test/image_upload/index.php"); // Click on Browse button and handle windows pop up using Sikuli driver.findElement(By.xpath(".//*[@id='photoimg']")).click(); s.wait(fileInputTextBox, 20); s.type(fileInputTextBox, inputFilePath + "Test.docx"); s.click(openButton); // Close the browser driver.close(); } }
Penjelasan Kode:
Langkah 1) Pernyataan pertama melibatkan pengaturan jalur driver yang dapat dieksekusi untuk chrome.
System.setProperty("webdriver.chrome.driver", "D:\\ chromedriver.exe");
Langkah 2) Gunakan alat screengrab seperti Snipping Tool untuk mengambil tangkapan layar jendela pop-up 'FileText'Box' dan tombol 'Buka'.
Seperti inilah tampilan tangkapan layar Anda: –
Gambar untuk kotak teks input file windows dan tombol buka disimpan ke 'FileTextBox.PNG' dan 'OpenButton.PNG'.
Sikuli menggunakan teknik Image Recognition untuk mengenali elemen pada layar. Ia menemukan elemen di layar hanya berdasarkan gambarnya.
Contoh: Jika Anda ingin mengotomatiskan pengoperasian pembukaan notepad, maka Anda perlu menyimpan gambar ikon desktop untuk notepad ke dalam file PNG dan melakukan operasi klik pada file tersebut.
Dalam kasus kami, ia mengenali kotak teks input file dan membuka tombol di Windows popup menggunakan gambar yang disimpan. Jika resolusi layar berubah dari pengambilan gambar ke eksekusi skrip pengujian, perilaku Sikuli akan tidak konsisten. Oleh karena itu, selalu disarankan untuk menjalankan skrip pengujian pada resolusi yang sama saat gambar diambil. Perubahan ukuran piksel gambar akan mengakibatkan Sikuli mengeluarkan pengecualian FindFailed.
Langkah 3) Pernyataan selanjutnya meliputi pembuatan objek untuk kelas Screen dan Pattern. Buat objek layar baru. Tetapkan jalur file yang ingin Anda unggah sebagai parameter ke objek Pola.
Screen s = new Screen(); Pattern fileInputTextBox = new Pattern(filepath + "FileTextBox.PNG"); Pattern openButton = new Pattern(filepath + "OpenButton.PNG");
Langkah 4) Pernyataan di bawah ini melibatkan pembukaan browser chrome dengan URL: https://demo.guru99.com/test/image_upload/index.php
driver = new ChromeDriver(); driver.get("https://demo.guru99.com/test/image_upload/index.php");
URL di atas adalah aplikasi demo untuk mendemonstrasikan fungsionalitas pengunggahan file.
Langkah 5) Klik tombol pilih file menggunakan pernyataan di bawah ini
driver.findElement(By.xpath(".//*[@id='photoimg']")).click();
Langkah 6) Tunggu hingga jendela pop-up muncul. Metode tunggu digunakan untuk menangani penundaan yang terkait dengan pembukaan jendela pop-up setelah mengklik tombol telusuri.
s.wait(fileInputTextBox, 20);
Langkah 7) Ketik jalur file ke kotak teks file input dan klik tombol Buka
s.type(fileInputTextBox, inputFilePath + "Test.docx"); s.click(openButton);
Langkah 8) Tutup peramban
driver.close();
Keluaran:
Awalnya, skrip membuka browser Chrome
Klik tombol 'Pilih File', layar pop-up file Windows akan muncul. Masukkan data ke dalam kotak teks Input File dan klik tombol 'Buka'
Layar di bawah ini ditampilkan setelah pengunggahan file selesai dan menutup browser
Kesimpulan
Sikuli digunakan untuk menangani objek flash pada halaman web dan jendela pop-up dengan mudah. Sikuli paling baik digunakan ketika elemen pada antarmuka pengguna tidak sering berubah. Karena kekurangan ini, dari perspektif pengujian otomasi, Sikuli kurang disukai dibandingkan dengan kerangka kerja lain seperti Robot dan AutoIT.