Введение.
SikuliX IDE — это среда разработки на Python для создания ботов на основе поиска картинок на экране.
Т.к. SikuliX использует Python, то вам необходимо его знать перед прочтением этой статьи. Есть много хороших и бесплатных курсов по Python, я назову лишь 2, это:
- Интерактивные курсы от SoloLearn.
- Видеокурсы от Stepik.
Теперь, перейдем к делу.
Сперва скачайте SikuliX IDE и запустите его.
Для использования данной среды, вам нужно установить Java.
Данная среда очень простая, поэтому сразу же напишем Hello World.
Пишем Hello World.
По задумке, наша будущая программа будет открывать блокнот и вводить в нем Hello World.
Сперва, с помощью комбинации Ctrl+Shift+2, выделите кнопку Windows.
Далее, введите комманду click() в редакторе SikuliX IDE, и, в качестве аргумента, передайте туда картинку Windows.
И запустите скрипт, нажав кнопку Выполнить. В итоге, мышка передвинулась к кнопке Windows и нажала на неё.
Далее, добавьте следующий код.
type("notepad"+Key.ENTER) #Вводит с клавиатуры notepad и нажимает ENTER
switchApp("Notepad") #Переключается на окно с названием содержащим "Notepad"
type("Hello World") #Вводит Hello World
Код я объяснил в комментариях, теперь запустите скрипт.
В результате, в блокноте появилась надпись Hello World.
Меняем настройки.
Разберем основные настройки.
- Settings.MoveMouseDelay — время перемещения мышки на следующую позицию (по умолчанию 0.5 сек)
- Settings.ObserverScanRate — задержка между сканированиями экрана (по умолчанию 0.33 сек)
- Settings.DelayBeforeMouseDown — задержка перед кликом (по умолчанию 0.5 сек)
Т.е, если уменьшить MouseMoveDelay до нуля, то курсор будет перемещаться мгновенно.
Подробнее о настройках вы можете узнать в документации.
Подсвечиваем цели.
Замените код Hello World, на следующее.
Разберемся как этот код работает.
- В начале я с помощью функции find, нашел регион в котором находится наша картинка.
- Далее, подсветил этот регион с помощью функции highlight на 1-у секунду.
- И кликнул по нему.
В итоге, появилась красная рамка. Данная подсветка может вам помочь в отладке.
Меняем смещение и коэффициент совпадения.
Кликните по картинке в редакторе кода и перейдите во вкладку Предпросмотр совпадений.
Внизу есть ползунок, двигая который можно настроить коэффициент совпадений.
Поиграйтесь с ползунком так, чтобы квадратами выделялось только то что вам нужно.
Далее, перейдите во вкладку Смещение цели.
Здесь, задается координата цели, относительно найденной картинки (по умолчанию это центр картинки). На эту координату, перемещается мышка, при использовании функции click().
Используем циклы.
Для примера, я создал цикл, который 5 раз перемещает мышку туда-обратно.
Функция hover перемещает мышку на координаты не кликая по ним. В качестве аргумента, я передал одно и тоже изображение, но с разным смещением.
Т.е. кнопка Windows, в нашем случае выступает в роли якоря, относительно которого вычисляются координаты.
Полезные функции.
Здесь я распишу некоторые функции, которые вам могут пригодится.
- exists(картинка) — возвращает True, если картинка найдена.
- has(картинка) — то же самое что и exists
- wait(картинка) — ждет появления картинки.
- sleep(количество_секунд) — ждет количество_секунд
- doubleClick(картинка) — двойной щелчок по картинке.
Интеграция SikuliX в свои программы?
SikuliX можно интегрировать в Java проект, для этого надо скачать sikulixapi.jar, и подключить его в качестве библиотеки. Подробнее здесь.
А есть ли подобное на Android?
Конечно есть, вот известные мне варианты:
- AnkuLua — очень похож на SikuliX, однако использует язык Lua.
- auto.js — китайская программа для автоматизации действий на экране, использует JS.
Заключение.
В этой статье я рассмотрел основы SikuliX, если остались вопросы, оставляйте их в комментариях.