Sikuli Eğitimi Selenium Otomasyon
⚡ Akıllı Özet
Sikuli, konum belirleyiciler yerine kaydedilmiş ekran görüntülerini tanıyarak grafiksel bir arayüzü otomatikleştirir; bu da bir Selenium test sürüşü Windows WebDriver'ın tek başına erişemediği açılır pencereler, yerel dosya iletişim kutuları ve Flash nesneleri.

Sikuli ne içindedir? Selenium?
sikuli açık kaynaklı GUI tabanlı bir test otomasyon aracıdır. Esas olarak web sayfalarının öğeleriyle etkileşim kurmak ve pencere tabanlı açılır pencereleri yönetmek için kullanılır. Sikuli, web sayfalarının öğeleriyle ve pencere açılır pencereleriyle etkileşim kurmak için “Görüntü Tanıma” ve “Kontrol GUI” tekniğini kullanır. Sikuli'de tüm web öğeleri görüntü olarak alınır ve proje içinde saklanır.
⚠️ İsimlendirme notu: Proje bugün de sürdürülmektedir. SikuliXMaven Central'da yayınlandı com.sikulix:sikulixapiAşağıdaki sınıf adları değişmeden kalmıştır.
Sikuli nasıl kullanılır? Selenium Web sürücüsü
Sikuli ile entegre edilebilir Selenium Aşağıdaki iki adımda Sikuli JAR dosyasını kullanarak WebDriver'ı kullanabilirsiniz.
Adım 1) İndir Aşağıdaki Sikuli JAR dosyasını indirin. URL, ve eskitracZIP dosyasının içeriğini bir klasöre kopyalayın.
https://mvnrepository.com/artifact/com.sikulix/sikulixapi/2.0.5
) 2 Adım İçinde yeni bir JAVA projesi oluşturun Eclipse Aşağıda gösterildiği gibi, projeye sağ tıklayıp "Derleme Yolu -> Derleme Yolunu Yapılandır" seçeneğini kullanarak JAR dosyasını ve Selenium JAR dosyalarını derleme yoluna ekleyin.
JAR dosyasını proje derleme yoluna ekledikten sonra, Sikuli tarafından sağlanan sınıflar kullanılabilir. Bunun yerine, bir Maven projesi aynı yapıyı bağımlılık olarak da tanımlayabilir.
Sikuli'de ekran sınıfı
Screen sınıfı, Sikuli tarafından sağlanan tüm metotların temel sınıfıdır. Screen sınıfı, tıklama, çift tıklama, metin kutusuna giriş yapma, fareyle üzerine gelme vb. gibi ekran öğeleri üzerinde yaygın olarak gerçekleştirilen tüm işlemler için önceden tanımlanmış metotlar içerir. Aşağıda, Screen sınıfı tarafından sağlanan yaygın olarak kullanılan metotların listesi bulunmaktadır.
| Yöntem | Açıklama | Sözdizimi |
|---|---|---|
| Tıkla | Bu yöntem, parametre olarak görüntü adını kullanarak ekrandaki bir öğeye tıklamak için kullanılır. |
Ekranlar = yeni Ekran(); s.click(“QA.png”); |
| çift tıklama | Bu yöntem bir elemente çift tıklamak için kullanılır. Parametre olarak resim adını kabul eder. |
Ekranlar = yeni Ekran(); s.doubleClick(“QA.png”); |
| Menşei | Bu yöntem bir öğeye giriş değeri sağlamak için kullanılır. Gönderilecek resim adını ve metni parametre olarak kabul eder. |
s.type(“QA.png”,”METİN”); |
| Duraksamak | Bu yöntem bir öğenin üzerine gelmek için kullanılır. Parametre olarak resim adını kabul eder. |
s.hover(“QA.png”); |
| bulmak | Bu yöntem ekranda belirli bir öğeyi bulmak için kullanılır. Parametre olarak resim adını kabul eder. |
s.find(“QA.png”); |
Sikuli'de desen sınıfı
Screen sınıfı yalnızca resim adıyla işlem yaparken, Pattern sınıfı ise resim dosyasını ek özelliklerle ilişkilendirerek öğeyi benzersiz şekilde tanımlamak için kullanılır. Parametre olarak resmin yolunu alır.
Pattern p = new Pattern(“Path of image”);
Aşağıda Pattern sınıfının en sık kullanılan metotları listelenmiştir.
| Yöntem | Açıklama | Sözdizimi |
|---|---|---|
| getFileName | Pattern nesnesinde bulunan dosya adını döndürür. |
Desen p = yeni Desen(“D:\Demo\QA.png”); String dosya adı = p.getFileName(); |
| benzer | Bu yöntem, benzerliği belirtilen değere ayarlanmış yeni bir Pattern nesnesi döndürür. Parametre olarak 0 ile 1 arasındaki benzerlik değerini kabul eder. Sikuli, belirtilen benzerlik aralığına giren tüm öğeleri arar ve yeni bir model nesnesi döndürür. |
Desen p1 = p.benzer(0.7f); |
| Tam | Bu yöntem, benzerliği 1'e ayarlanmış yeni bir model nesnesi döndürür. Yalnızca belirtilen öğenin tam eşleşmesini arar. |
Desen p1 = p.exact(); |
Code Sikuli kullanarak dosya yükleme örneği
Aşağıdaki kod, Chrome'da dosya yüklemek için Sikuli kullanımını açıklamaktadır.
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 açıklama
) 1 Adım İlk ifade, Chrome için sürücü çalıştırılabilir yolunun ayarlanmasını içerir.
System.setProperty("webdriver.chrome.driver", "D:\\ chromedriver.exe");
⚠️ Sürüm notu: Selenium 4, sürücü ikili dosyasını şu şekilde çözümler: Selenium Yönetici, bu satır artık isteğe bağlı. Kaynak tarafından yazıldığı gibi korunuyor.
) 2 Adım Aşağıdaki gibi bir ekran yakalama aracı kullanın: Snipping Tool Windows açılır penceresinin ekran görüntüsünü almak için 'FileText'Box' ve 'Aç' düğmesi, aşağıdaki gibidir.
Ekran görüntünüz şöyle görünmelidir:
Windows dosya giriş metin kutusu ve açık düğme için resimler 'FileText'e kaydedilirBox.PNG' ve 'OpenButton.PNG'.
Örnek: Not defteri açma işlemini otomatikleştirmek istiyorsanız, not defteri için masaüstü simgesinin görüntüsünü bir PNG dosyasına kaydetmeniz ve üzerinde tıklama işlemini gerçekleştirmeniz gerekir.
Bizim durumumuzda, dosya giriş metin kutusunu ve Aç düğmesini tanıyor. Windows saklanan görüntüleri kullanan açılır pencere. Ekran çözünürlüğü görüntü yakalamadan test betiği yürütmeye değişirse, Sikuli'nin davranışı tutarsız olur. Bu nedenle, test betiğini görüntülerin yakalandığı çözünürlükte çalıştırmak her zaman tavsiye edilir. Görüntülerin piksel boyutundaki değişiklik, Sikuli'nin FindFailed istisnası atmasına neden olur.
) 3 Adım Sonraki ifadeler Screen ve Pattern sınıfları için nesnelerin oluşturulmasını içermektedir. Yeni bir ekran nesnesi oluşturun. Yüklemek istediğiniz dosyanın yolunu Pattern nesnesine parametre olarak ayarlayın.
Screen s = new Screen(); Pattern fileInputTextBox = new Pattern(filepath + "FileTextBox.PNG"); Pattern openButton = new Pattern(filepath + "OpenButton.PNG");
) 4 Adım Aşağıdaki ifadeler, Chrome tarayıcısını şu şekilde açmayı içerir: URL Bir demo dosya yükleme uygulamasının örneği: https://demo.guru99.com/test/image_upload/index.php
driver = new ChromeDriver(); driver.get("https://demo.guru99.com/test/image_upload/index.php");
) 5 Adım Aşağıdaki ifadeyi kullanarak dosya seç düğmesini tıklayın
driver.findElement(By.xpath(".//*[@id='photoimg']")).click();
) 6 Adım Windows açılır penceresinin görünmesini bekleyin. Bekleme yöntemi, gözat düğmesine tıklandıktan sonra Windows açılır penceresinin açılmasıyla ilişkili gecikmeyi yönetmek için kullanılır.
s.wait(fileInputTextBox, 20);
) 7 Adım Giriş dosyası metin kutusuna dosya yolunu yazın ve Aç düğmesine tıklayın
s.type(fileInputTextBox, inputFilePath + "Test.docx");
s.click(openButton);
) 8 Adım Tarayıcıyı kapat
driver.close();
Çıktı
Başlangıçta, komut dosyası Chrome tarayıcısını açar
'Dosya Seç' düğmesine tıklandığında, Windows dosya açılır ekranı görünecektir. Dosya Girişi metin kutusuna veri girer ve 'Aç' düğmesine tıklanır
Dosya yükleme işlemi tamamlandığında ve tarayıcı kapatıldığında aşağıdaki ekran görüntülenir
Eşleştirme piksellere bağlı olduğundan, arayüz yeniden tasarlandığında her referans görüntüsünü yeniden yakalayın. Bu kırılganlık nedeniyle ekipler Sikuli'yi açılır pencereler için saklıyor. sade WebDriver dosya işleme ulaşamıyorum.






