Визуални скриптове

Съдържанието на статията

„Това, което виждате, е това, което пишете“ - така звучи в оригинала принципът, на който се основава Sikuli. Между другото, името на програмата не е случайно. Самата дума „Сикули“ е преведена от древноиндийския език Wixarica от Мексико като „Божието око“, което недвусмислено намеква за способността да се вижда всичко на екрана. Проектът възникна през 2008 г., резултат от съвместни усилия между китайския студент Шон Цунг-Сянг Чан от Масачузетския технологичен институт (MIT), професор Роб Милър от отдела за EECS в MIT и Том Йе, който работи върху докторската си степен в университета в Мериленд.

Разработчиците откриват, че някои задачи (като автоматизиране на тестване на потребителски интерфейс) са по-лесни за изпълнение с визуални средства. Sikuli използва алгоритми за разпознаване на текст и индексиране на изображения, използвайки така наречените „визуални думи“. Вградените функции на езика приемат графични данни като параметри и в зависимост от тях извършват определени действия.

Например, предаването на функцията hover () на изображение на бутона "Старт" на Windows ще доведе до преместване на курсора до него. Това е само малък пример за това, което предлага тази визуална технология.

Ключовият момент на развитието е, че буквално показвате какво трябва да се направи и Сикули го повтаря. По този начин можете да автоматизирате всичко, което виждате на екрана, без изобщо да използвате специализирани API.

Например, програмирайте каквито и да е действия на уеб страница, работете с Windows/Linux/MacOS приложение или дори с програми на iPhone/Android, като използвате симулатор на устройство или свързване към неговия екран чрез VNC. За да търси конкретни елементи на интерфейса, Sikuli използва само техните екранни снимки и улеснява имитирането на щраквания с мишката на правилните места и въвеждане от клавиатурата. Освен това Sikuli използва Jython като скриптов език, т.е. в скрипта, ако е необходимо, можете да използвате всякакви Python конструкции.

Алтернативи?

Най-общо казано, емулирането на потребителски действия е доста често срещана задача. В страничната лента предоставих няколко често срещани примера за това кога може да е необходимо. Злоумишлените, например, могат да използват това в своите черни дела. В един от броевете говорихме за концепцията за троянски кон, който е способен да тегли пари от портфейлите на електронните платежни системи. След това за емулиране на потребителски действия бяха използвани стандартните възможности на Windows. Благодарение на API извикванията на системата, можете да емулирате всичко: всяка последователност от щраквания и движения на мишката на потребителя, работа с прозорци и приложения.

Ако е възможно най-просто да се опише работата на тази тройка, тогава той самостоятелно отвори прозореца на приложението на платежната система, след това отиде до интерфейса за прехвърляне на пари към друга сметка и замени левия портфейл като получател. Но проблемът с този подход е, че трябва да сте програмист, за да използвате API извиквания.

Има, разбира се, решения, които правят възможно без сложно системно програмиране. Например AutoIt (autoitscript.com/autoit3) предоставя прост скриптов език за автоматизиране на почти всяка задача. Цялата поредица от действия на създадения макрос е зададена под формата на съвсем разбираеми команди, базирани на имената на прозорци и елементи на интерфейса. Например, за да стартирате добавката Computer Management и да изчакате да се появи прозорецът със същото име, трябва да напишете следния код:

Изпълнение ('cmd/c "compmgmt.msc"', @SystemDir, @SW_HIDE)
WinWaitActive ("Компютърно управление")

По-прост от C ++ кода, но все пак изглежда смущаващ. За да не пишете макроси ръчно, можете да използвате допълнителни помощни програми (като AutoItMacroGenerator), които в реално време преобразуват всичките ви действия в системата в макрос за AutoIt. Но дори тези трикове не позволяват на приложението да достигне нивото на Sikuli по отношение на лекотата и достъпността при писане на странични скриптове. Сега ще се убедите в това.