Sikuli Eğitimi Selenium Otomasyon
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.
Sikuli nasıl kullanılır? Selenium Web sürücüsü
Sikuli, Sikuli JAR dosyası kullanılarak Selenyum web sürücüsü ile entegre edilebilir.
Aşağıdaki sıra Sikuli'yi Selenyum web sürücüsüyle yapılandırmak için gereken adımların listesidir.
Adım 1) İndir Aşağıdaki URL'den Sikuli JAR dosyasını indirin ve ZIP dosyasının içeriğini bir klasöre çıkarın.
https://mvnrepository.com/artifact/com.sikulix/sikulixapi/2.0.5
) 2 Adım İçinde yeni bir JAVA projesi oluşturun Eclipse ve projeye Sağ Tıklayarak -> Yapı Yolu -> Yapı Yolunu Yapılandır'ı kullanarak selenyum jar dosyalarıyla birlikte JAR dosyasını derleme yoluna ekleyin
JAR dosyasını proje oluşturma yoluna ekledikten sonra Sikuli tarafından sağlanan sınıflar kullanılabilir.
Sikuli'de ekran sınıfı
Ekran sınıfı, Sikuli tarafından sağlanan tüm yöntemler için temel sınıflardır. Ekran sınıfı, tıklama, çift tıklama, bir metin kutusuna girdi sağlama, gezinme vb. gibi ekran öğelerinde yaygın olarak gerçekleştirilen tüm işlemler için önceden tanımlanmış yöntemler içerir. Aşağıda Ekran sınıfı tarafından sağlanan yaygın olarak kullanılan yöntemlerin 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ı
Desen sınıfı, öğeyi benzersiz şekilde tanımlamak için görüntü dosyasını ek niteliklerle ilişkilendirmek için kullanılır. Parametre olarak görüntünün yolunu alır.
Desen p = yeni Desen(“Görüntünün Yolu”);
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(); |
Sikuli Kullanarak Dosya Yüklemeye İlişkin Kod Örneği
Aşağıdaki kod, Sikuli'nin dosya yükleme için kullanımını açıklamaktadır. 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();
}
}
Kod Açıklaması:
) 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");
) 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üğmesine basın.
Ekran görüntünüz şu şekilde görünmeli: -
Windows dosya giriş metin kutusu ve açık düğme için resimler 'FileText'e kaydedilirBox.PNG' ve 'OpenButton.PNG'.
Sikuli, ekrandaki öğeleri tanımak için Görüntü Tanıma tekniğini kullanıyor. Ekrandaki öğeleri yalnızca görüntülerine göre bulur.
Ö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 tanır ve düğmeyi açar 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ın URL ile açılmasını içerir: https://demo.guru99.com/test/image_upload/index.php
driver = new ChromeDriver();
driver.get("https://demo.guru99.com/test/image_upload/index.php");
Yukarıdaki URL, dosya yükleme işlevini gösteren bir demo uygulamasıdır.
) 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
Sonuç
Sikuli, bir web sayfasındaki flaş nesneleri ve pencere açılır pencerelerini kolaylıkla işlemek için kullanılır. Sikuli, kullanıcı arayüzündeki öğeler sık sık değişmediğinde en iyi şekilde kullanılır. Bu dezavantaj nedeniyle, otomasyon testi perspektifinden bakıldığında, Sikuli, Robot ve AutoIT gibi diğer çerçevelere kıyasla daha az tercih edilir.







