Tutorial Sikuli untuk Selenium Otomatisasi
โก Ringkasan Cerdas
Sikuli mengotomatiskan antarmuka grafis dengan mengenali tangkapan layar yang tersimpan, bukan penunjuk lokasi, yang memungkinkan Selenium uji coba Windows popup, dialog file asli, dan objek Flash yang tidak dapat dijangkau oleh WebDriver saja.
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.
โ ๏ธ Catatan penamaan: Proyek tersebut dipelihara hingga saat ini sebagai berikut: SikuliX, diterbitkan di Maven Central sebagai com.sikulix:sikulixapiNama kelas di bawah ini tidak berubah.
Cara menggunakan Sikuli dengan Selenium Driver web
Sikuli dapat diintegrasikan dengan Selenium WebDriver menggunakan file JAR Sikuli, dalam dua langkah di bawah ini.
Langkah 1) Unduh file JAR Sikuli dari bawah ini URL, dan mantantracSalin isi file ZIP ke dalam sebuah folder.
https://mvnrepository.com/artifact/com.sikulix/sikulixapi/2.0.5
Langkah 2) Buat proyek JAVA baru di Eclipse lalu tambahkan file JAR ke build path, bersama dengan file jar selenium menggunakan Klik Kanan pada proyek -> Build Path -> Configure Build Path, seperti yang ditunjukkan di bawah ini.
Setelah Anda menambahkan file JAR ke jalur build proyek, kelas-kelas yang disediakan oleh Sikuli dapat digunakan. Proyek Maven dapat mendeklarasikan artefak yang sama sebagai dependensi.
Kelas layar di Sikuli
Kelas Screen adalah kelas dasar untuk semua metode yang disediakan oleh Sikuli. Kelas Screen berisi metode yang telah ditentukan sebelumnya untuk semua operasi yang umum dilakukan pada elemen layar seperti klik, klik ganda, memberikan input ke kotak teks, mengarahkan kursor, dll. Berikut adalah daftar metode yang umum digunakan yang disediakan oleh kelas Screen.
| metode | Deskripsi | 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
Jika kelas Screen hanya memproses nama gambar biasa, kelas Pattern digunakan untuk mengaitkan file gambar dengan atribut tambahan guna mengidentifikasi elemen secara unik. Kelas ini menerima path gambar sebagai parameter.
Pattern p = new Pattern(โPath of imageโ);
Berikut ini adalah metode kelas Pola yang paling umum digunakan.
| metode | Deskripsi | 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(); |
Code Contoh Pengunggahan File menggunakan Sikuli
Kode di bawah ini menjelaskan penggunaan Sikuli untuk mengunggah file di Chrome.
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(); } }
Code Penjelasan
Langkah 1) Pernyataan pertama melibatkan pengaturan jalur driver yang dapat dieksekusi untuk chrome.
System.setProperty("webdriver.chrome.driver", "D:\\ chromedriver.exe");
โ ๏ธ Catatan versi: Selenium 4 menyelesaikan biner driver melalui Selenium Manajer, jadi baris ini sekarang opsional. Tetap seperti yang tertulis di sumber aslinya.
Langkah 2) Gunakan alat screengrab seperti Snipping Tool untuk mengambil tangkapan layar jendela pop-up 'FileText'Boxdan tombol 'Buka', seperti di bawah ini.
Beginilah seharusnya tampilan tangkapan layar Anda:
Gambar untuk kotak teks input file windows dan tombol buka disimpan ke 'FileTextBox.PNG' dan 'OpenButton.PNG'.
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, sistem mengenali kotak teks input file dan tombol Buka pada 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 dari aplikasi demo pengunggahan file: https://demo.guru99.com/test/image_upload/index.php
driver = new ChromeDriver(); driver.get("https://demo.guru99.com/test/image_upload/index.php");
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
Karena pencocokan bergantung pada piksel, setiap gambar referensi harus diambil ulang setiap kali antarmuka diubah gayanya. Kerentanan itulah mengapa tim hanya menggunakan Sikuli untuk popup. penanganan file WebDriver biasa tidak dapat dijangkau.






