Sikuli pozawala na szybką i łatwą automatyzacje powtarzalnych czynności. Często wykorzystuje to narzędzie w swoich pracach developerskich, lub testowania aplikacji. Jest ona lekka i szybka.
Podstawowe możliwości:
+ rozpisywanie obrazu
+ wyszukiwanie elementów na obrazie
+ symulowanie działań myszy lub klawiatury
+ tworzenie botów
+ wyszukiwanie wg wzoru (pattern)
Sikuli ma bardzo prostą składnie. Skrypty tworzyć można wykosztowując prosty IDE udostępniany przez producenta. Do stworzenia działającego programu wykorzystuje się język Python. Biblioteka posiada kilka funkcji a najpopularniejsze to:
• find() – w parametrze przekazujemy obraz, który ma zostać wyszukany;
• findAll() – wyszukuje wszystkie elementy na ekranie;
• wait() – czeka, do momentu pojawienia się elementu podanego w parametrze;
• waitVanish() – czeka, aż wskazany element zniknie z ekranu
• exists() – sprawdza czy element istnieje;
• click() – click 🙂
• type() – w parametrze przyjmuje ciąg znaków jaki ma zostać wpisany;
• doubleClick() – podwójne klikniecie;
Sikuli Przykład 1
Zadanie polega na wyszukaniu obrazka i przyciskanie go tak długo, aż widoczny będzie on na ekranie. Poniżej kod:
find("1467232329734.png") # wyszukaj obraz while(1): # pętla nieskończona click("1467232329734.png") # clickaj!
Kod jest na tyle banalny, że nie podlega tłumaczenia. W parametrze funkcji wstawiane są ścieżki do zasobów obrazka. Oczywiście SikulixIDE, umożlwia łatwe i szybkie robienie printScreenów. W efekcie powstaje w środowisku taki efekt:
A tu działanie programu:
Sikuli Przykład 2
Chcemy znaleźć wszystkie ikony ze strzałkami na obrazku
Metoda findAll zwraca wszystkie dopasowane obiekty.
findAll("1467236680064.png") # ścieżka do grafiki arrow = SCREEN.getLastMatches() # przypisanie dopasowania do zmiennej while arrow.hasNext(): print "Znaleziono: ", arrow.next()
W logach konsoli zaobserwujemy:
Znaleziono: M[510,531 100×105]@S(S(0)[0,0 1920×1200]) S:1,00 C:560,583 [-1 msec]
Znaleziono: M[1032,775 100×105]@S(S(0)[0,0 1920×1200]) S:1,00 C:1082,827 [-1 msec]
Znaleziono: M[771,531 100×105]@S(S(0)[0,0 1920×1200]) S:1,00 C:821,583 [-1 msec]
Podsumowanie
Sposobów na wykorzystanie Sikuli jest masa. Sam wykorzystywałem go gdy podczas tworzenia pewnej aplikacji musiałem skorzystać z API do którego każdorazowo trzeba było wprowadzać multum danych. Szukałem lekkiego rozwiązania. Sikuli idealnie do tego się nadał.
Innym atrakcyjniejszym przykładem jaki widziałem, było stworzenie aplikacji, która wygrywała po kolei wszystkie etapy Angry Birds. A więc można zastosować bibliotkę nawet w machine learning. Program tak długo uczył się strzelać, dopóki nie udało mu się zbić wszystkich elementów.
Warto wspomnieć, że Sikuli posiada kilka bibliotek między innymi do wykorzystania w Javie.