Sitemap
Semih Saydam

Semih Saydam

QA / DevOps Engineer — Be happy :)

Sikuli-1

5 min readMay 1, 2020
Press enter or click to view image in full size

Merhabalar,

Bu yazımda Sikuli’den bahsedeceğim. Sikuli ekranda gördüğünüz her şeyi otomasyona dökebilir. Bunu yaparken “image recognition” kullanır. openCV kütüphanesi ile çalışır. Yani buradan anlıyoruz ki siz gözünüzle nasıl bir fotoğrafı tanıyıp ona tıklıyorsanız sikuli’de bir fotoğrafı tanıyor ve ona tıklıyor. Tabii insan gözü kadar performanslı olmasa da işimizi görüyor :)

Yazının ilerleyen kısımlarında Sukili ile masaüstümde bulunan “Google Chrome” simgesine tıklayacağım. Ardından yeni sekme açıp n11 üzerinde otomasyon yapacağım.

Kısacası ekranda gördüklerinize tıklayabilirsiniz, yazı alanlarına yazı yazabilirsiniz , bir klasörü taşıyabilirsiniz vb. daha bir sürü işlem imkanı vermektedir. Hesap makinesini açıp toplama çıkarma vb. bir sürü işlemi otomasyona dökebilirsiniz.

Bu yazıda sadece Sikuli script üzerinden kendi IDE’si ile otomasyon yapıyor olacağız. Sonraki yazıda ise Sikuli API kullanarak komutları intelliJ’de java ile yazıyor olacağız. Hatta olayı biraz daha karmaşıklaştırıp önce selenium ile bir driver ayağa kaldırıp otomasyon yaparız, ardından selenium’un çalışmayacağı kısımlarda sikuli ile otomasyonu devam ettiririz. Hadi başlayalım :)

Öncelikle bu linkten Sikulixsetup-1.1.3.jar ‘ı indirelim. Ardından indirdiğiniz jar dosyasını bir klasörün içine atalım ve üzerine tıklayıp kurmaya başlayalım. Soracağı her soruya “Yes” olarak cevap verelim. Kurulumun başlarında çıkacak olan bu ekranda ise 3 seçeneği de işaretleyelim :

Press enter or click to view image in full size

Kurulumda sorulan her soruya “Yes” dedikten sonra bazı indirmeler yapacaktır. Kurulum bittikten sonra başka .jar dosyaları gelecektir. Eğer MacOs kullanıyorsanız dosyalarınız şu şekilde olacaktır :

Press enter or click to view image in full size

Baştaki setup bizim için uygulamayı ve intelliJ java’da kullanacağımız sikulixapi.jar’ı getirmiş oldu. “runsikulix” ile başlatabiliriz. Başlattıktan sonra şu şekilde bir ekran bizi karşılıyor olacaktır :

Press enter or click to view image in full size

Sol tarafta hazır fonksiyonlarımızı görebilirsiniz. Bu fonksiyonlar içine parametre olarak fotoğraf alıyor :) Message kısmına ise yapılan işler log’lanıyor. Yaptığı başarılı ve başarısız işlemleri gösteriyor. Bu işlemleri ne kadar sürede yaptığını da gösteriyor.

Press enter or click to view image in full size

Gördüğünüz gibi tıklamalar, klavye’de bir tuşa basma ve yazı yazma gibi işlemleri kısa sürelerde yapıyor. Aslında bunu daha da kısaltabiliriz. Çünkü image recognition yapılırken tüm ekranınızı tarıyor. Eğer programa sadece şu bölgeyi tara derseniz işlemi epey bi kısaltacaksınızdır. İleriki yazılarda buna değineceğiz.

Şimdi yavaştan uygulama yapmaya geçelim. Böylece daha iyi anlaşılacaktır. Öncelikle Google Chrome’a tıklayacağım. Yüklenmesi için 2 saniye bekleyeceğim. Ardından yeni sekme açmak için “+”a tıklayacağım. Bu kısa işlem ile başlayalım :

Press enter or click to view image in full size

Öncelikle sol taraftaki hazır fonksiyonlardan doubleClick()’i seçtim. Ardından benim ekranda bir fotoğraf çekmemi istedi. Masaüstümdeki Google Chrome uygulamasının fotoğrafını çektim. Ardından çektiğim fotoğrafın üzerine tıklıyorum. Burası çok önemli çünkü çektiğim fotoğrafta tam olarak nereye tıklayacağını buradan ayarlıyoruz. Fotoğrafa tıkladıktan sonra :

Press enter or click to view image in full size

Bu şekilde bir ekran açılacaktır. Burada tam nereye tıklayacağınızı işaretlemeniz gerekiyor. Ben tam Google Chrome simgesinin ortasına hiza alıyorum. Yani oraya tıklarsa başarılı bir tıklama yapabilir diyorum.

Mesela bu şekilde bir tıklama başarısız olacaktır. Burada tam belli olmasa da daha büyük bir alanı seçtiğinizde nereye hedef aldığı önemlidir. O yüzden tıklanacak alanı her fotoğrafta kontrol etmelisiniz.

Get Semih Saydam’s stories in your inbox

Join Medium for free to get updates from this writer.

Ardından manuel olarak Google Chrome’u açalım.

Press enter or click to view image in full size

Gelen sayfada “+” ile yeni bir sekme açmak istiyorum. Sikuli’ye gelip click fonksiyonuna tıklıyorum. Fotoğraf seçmemi istediğinde ise + ibaresini seçiyorum. Ardından seçtiğim fotoğrafa tıklayıp yine hedef bilgisini veriyorum.

Bu satırı da hallettikten sonra adımlarımız aşağıdaki fotoğraftaki gibi olmalıdır. Gördüğünüz üzere Google Chrome üzerinde kırmızı bir nokta var. Verdiğim hedef’i kod içerisinde de bize kırmızı nokta ile gösteriyor.

Run ifadesine basarak çalıştıralım.

Çalıştırmak istediğinizde sizden bazı izinler isteyecektir. Java’nın ekran fotoğrafını çekebilmesi için, bilgisayarı kontrol edebilmesi için vb. Zaten her yaptığınız işlemde sizden izni istiyor olacaktır. Bazı izinler şu şekilde :

Press enter or click to view image in full size

Fonksiyon çağırdığımızda fotoğraf çekerken masaüstü uygulamalarızı görebilmesi için sh ve java’ya record izni veriyoruz. Ardından bilgisayarı kontrol edebilmesi için de şu şekilde bir izin istiyor :

Press enter or click to view image in full size

Java’ya bilgisayarı kontrol izni de verdikten sonra artık yazdığımız satırları çalıştırabiliriz :

GIF’te gördüğünüz üzere Run’a bastıktan sonra otomasyona başlıyor. Mouse’u sürükleyip Google Chrome’a tıklıyor. Ardından 2 saniye bekliyor ve yeni sekme açma butonuna tıklıyor. Şimdi olayı biraz daha ilerletelim.

Selenium’la yaptığmız n11.com login senaryosunu bununla yapalım. Buradaki asıl amaç web otomasyon değildir. Amacım ekrandaki herhangi bir şeye nasıl tıklayabileceğiniz veya nasıl yazı yazabileceğinizi göstermektir. Zaten birdahaki yazımda web otomasyonun üzerine sikuli’yi ekleyerek bir örnek yapacağımı söylemiştim. Şimdi bir adım ilerletelim :

Press enter or click to view image in full size

Yine yeni bir sekma açtıktan sonra açılan sekmede “https://n11.com” yazıyoruz ve type(Key.ENTER) ile enter tuşuna basıyoruz. Böylelikle n11.com’un ana sayfasına gidiyoruz. Ardından sayfanın yüklenmesi için 2 saniye bekledikten sonra “Giriş Yap” butonuna tıklatıyoruz.

GIF’te gördüğünüz üzere önce Google chrome’u açtı ardından yeni sekmede n11.com yazdıktan sonra Enter tuşuna basarak n11 anasayfaya gitti. Son olarak da Giriş Yap butonuna tıkladı. Şimdi bir adım daha ilerleyelim.

Press enter or click to view image in full size

13. satırda Giriş Yap’a tıkladıktan sonra paste() komutu ile E-posta alanına odaklanıp oraya e-mail adresimizi yazdırdık. Ardından 22.satırda “Beni hatırla” checkbox’ının kutucuğuna tıklattık. Giriş Yap ‘a tıklattık fakat yanlış şifre verdiğim için giriş yapmıyor olacaktır. Giriş yapmadığı için n11 logosuna tıklatıp tekrar anasayfaya döndürüyoruz. Ardından hover() komutunu da görebilmeniz için “Giyim Ayakkabı” kısmına gelip üzerinde duracaktır. Üzerinde durduğunda yanında yeni şeyler kategoriler çıkacaktır :

Başarılı bir şekilde komutlarımız çalıştı. Sonraki yazıda bu işlemleri sikulixAPI ve java ile intelliJ üzerinden yapıyor olacağız. Umarım yararlı olmuştur.

Mutlu günler dilerim :)

Press enter or click to view image in full size

--

--

Semih Saydam
Semih Saydam

Written by Semih Saydam

QA / DevOps Engineer — Be happy :)