четверг, 17 мая 2018 г.

Очень просто автоматизируем сбор урожая в Android игре

Недавно был опубликован отличный инструмент для автоматизации мобильных приложений - Airtest IDE.

Этот фреймворк использует распознавание картинок на экране мобильного устройства, и умеет делать все, что может потребоваться для автоматизации любого приложения.

Мне нравится играть в Township, поэтому на примере этой игры я и решил поэкспериментировать и автоматизировать простые действия пользователя, проверив возможности фреймворка.

Интерфейс Airtest IDE выглядит удобно, все достаточно просто и понятно.

Тесты пишутся на Python, при этом в IDE мы можем объявлять собственные переменные, присваивая им картинки с экрана устройства, выглядит это так:


В Python коде это будет выглядеть иначе:

carrot = Template(r"tpl1526539603051.png", record_pos=(0.078, -0.018), resolution=(1920, 1080))

Картинки складываются прямо рядом с Python скриптом отдельными файлами.

Пример ожидания и нажатия кнопки "Забрать" (для ежедневной награды пользователю):


Немного разобравшись с возможностями инструмента, я перешел к автоматизации реального сценария:

1) Открываем игру
2) Ждем ежедневную награду и забираем ее, если награды нет, то просто пропускаем этот шаг
3) Если на поле есть созревшая морковка, то собираем всю морковку
4) Если на поле есть созревшая пшеница, то собираем всю пшеницу
5) Если есть пустые поля - засеиваем их пшеницей

Пример кода, который в результате получился, можно посмотреть здесь.

Итого:

Сильные стороны Airtest IDE:
1) Поддерживает Python синтаксис и сторонние Python библиотеки
2) Умеет находить элементы по картинке (а значит с его помощью можно автоматизировать любое приложение, в том числе мобильные игры)
3) Есть удобные локаторы, например, можно найти элемент по тексту внутри элемента и даже по регулярке, можно применять сразу несколько локаторов
4) Основан на Poco Library и поддерживает все его фичи.

Слабые стороны Airtest IDE:
1) Пока нет поддержки iOS (но обещают скоро сделать)
2) IDE не работает на Linux (либо Windows, либо MacOS) - но можно писать на чистом Poco SDK, тогда и IDE не нужна
3) Нет всего многообразия продвинутых локаторов как в Appium (например XPath) - но есть другие, и их вполне хватает
4) Нет подробной документации по продвинутому использованию (будем надеяться скоро появится)
5) Нет нормальной интеграции с тестовыми фреймворками, придется одновременно использовать Airtest IDE и PyCharm, копируя куски кода, чтобы написать нормальный тест, либо сразу переходить на PyCharm + Poco SDK, без Airtest IDE.