- PVSM.RU - https://www.pvsm.ru -
SikuliX (старое название Sikuli) — это инструмент, который позволяет автоматизировать то, что вы видите на экране с помощью визуального распознавания (картинок). На хабре уже есть достаточно информации по нему [1], но все примеры подразумевают использование реального экрана.
Здесь же я опишу свой опыт использования SikuliX в фоновом режиме на облачной IDE Cloud9 [2]. В процессе работы с данным инструментом набил немного шишек, поэтому возможно, мой опыт будет кому-то полезен.
Вариантов использования SikuliX достаточно много, вот некоторые из действий, которые вы можете автоматизировать:
В моем случае, было необходимо автоматизировать рутинную работу с флеш сайтом, залогиниться, выбрать в выпадающем списке определенный пункт и понажимать несколько кнопочек. Занимало это порядка 1-3х минут по несколько раз в день. После задействования SikuliX это можно делать через простой запуск скрипта, и тратить свободное время на более полезные вещи (например подучить английский).
SikuliX зависит от таких инструментов, как OpenCV (компьютерное зрение) и Tesseract (распознавание текста). Поэтому, их мы и установим. Начнем с OpenCV.
Установка OpenCV оказалась не очень простой, поэтому я использовал этот [3] скрипт, который установит и сбилдит все необходимое. Склонируем его, дадим права на исполнение и запустим.
git clone git@gist.github.com:3d1fce8dae65e765f7c4.git
cd 3d1fce8dae65e765f7c4
chmod +x install-opencv-2.4.11-in-ubuntu.sh
./install-opencv-2.4.11-in-ubuntu.sh
Надо сказать, что установка OpenCV “выедает” почти все ресурсы которые cloud9 предоставляет в бесплатном режиме. С платным планом было бы проще, но мне хватило и того что есть. Процесс билда составил 2.15 часа, в это время можете заниматься своими делами, проблем возникнуть не должно. После установки, папку 3d1fce8dae65e765f7c4 можно удалить (освободит почти всю память).
С установкой Tesseract все просто:
sudo apt-get install tesseract-ocr
Для установки самого SikuliX нам все же понадобится реальный экран (ограничение Java). Решением стал запуск X11. Чтобы поставить необходимые компоненты, можем использовать этот [4] скрипт. В состав входят supervisor, xvfb, fluxbox, x11vnc. Для запуска мы можем перенести файлы run.sh и supervisord.conf в корень, или поправить путь к supervisord.conf в файле run.sh
git clone git@github.com:fjakobs/cloud9-vnc.git
cd cloud9-vnc/
./install.sh
./run.sh
Если все прошло успешно, то после запуска run.sh терминал выдаст ссылку. Перейдем по ней в браузере. Что-то на подобии your-workspace/vnc.html. Там, нажмем “Connect” и попадем в оконный менеджер fluxbox.
Для установки нам понадобится SikuliX 1.1.1 (версии выше не пробовал), так как в версии 1.1.0 был баг, который не позволял запустить sikuli в фоне. Нам нужно скачать sikulixsetup, возьмем его здесь [5].
В fluxbox откроем терминал и запустим скачанный файл на установку. У меня было так:
java -jar sikulixsetup-1.1.1-20151126.001204-18-forsetup.jar
Должно открыться окно с вариантами установки SikuliX.
Я выбрал первый вариант, который установит sikulix.jar, включающий в себя SikuliX IDE. Скрипты, написанные в нем, потом можно будет запустить в терминале без необходимости открывать IDE. Как подпункт я выбрал Python. Вы можете выбрать иной вариант установки, исходя из своих нужд.
На этапе установки Jython возможны проблемы с установкой Jython 2.7.0 (у меня они были, скрипт просто не запускался). Поэтому лучше нажать кнопку “NO” и установить Jython 2.5.4rc1.
Если все прошло успешно, то вы должны увидеть такое всплывающее окно:
Теперь можем запустить IDE. В ней мы будем писать и отлаживать наши скрипты для дальнейшего их запуска в фоновом режиме.
java -jar sikulix.jar
Для примера давайте напишем простой скрипт, который проверяет находится ли хабр в топе выдачи гугла по запросу “как пасти котов”. Включим пользовательские логи и запишем наши действия в файл.
Скрипт написали, отладили.
В процессе отладки в терминал и лог сыпались некоторые ошибки, типа:
[error] command 'wmctrl' is not executable
command 'xdotool' is not executable
Failed to initialize libdc1394
Ошибки не критичны и можем их просто игнорировать.
После визуальной отладки можем закрыть fluxbox и перейти в терминал IDE Cloud9.
Запустить скрипт в фоне нам поможет Xvfb [6] (X virtual framebuffer). Это виртуальный X-сервер, который выполняет все графические операции в памяти. Почитать можно тут [7]. Пропишем параметры виртуального экрана, путь к сохраненному проекту, название файла логов и попробуем запустить.
xvfb-run --server-num=10 --server-args="-screen 0 1280x864x16" ./runsikulix -r project.sikuli/ -f SikuliLog.txt
Если все прошло гладко, то в нашем файле логов можно будет прочитать “Success. Habrahabr is in Google's first page”. Профит.
Дальше можно написать небольшое API и запускать наши скрипты/автотесты, например с консоли рабочего компьютера.
Автор: Инфопульс Украина
Источник [9]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/python/109961
Ссылки в тексте:
[1] нему: http://habrahabr.ru/search/?q=Sikuli
[2] Cloud9: https://c9.io
[3] этот: https://gist.github.com/dynamicguy/3d1fce8dae65e765f7c4
[4] этот: https://github.com/fjakobs/cloud9-vnc
[5] здесь: http://nightly.sikuli.de/
[6] Xvfb: http://en.wikipedia.org/wiki/Xvfb
[7] тут: http://habrahabr.ru/post/113928/
[8] Официальный сайт проекта.: http://www.sikulix.com/
[9] Источник: https://habrahabr.ru/post/275717/
Нажмите здесь для печати.