Облако, работает сразу
Консоль в облаке: откройте браузер — и она уже там. Подключите устройство, и оно появится в списке. Ничего не надо ставить, настраивать и обслуживать.
Консоль работает в облаке — откройте браузер, и она уже там. Подключите устройство, и оно появится в списке: ничего не нужно ставить, настраивать и обслуживать. Сделайте задачу один раз на живом экране — и получите скрипт, или напишите его сами: найти элемент, картинку или текст — это одна строка. Затем отправьте его на всю группу устройств.
function main() {
client.session('com.zhiliaoapp.musically'); // открыть приложение
// необязательное окно: ждать не больше 1 секунды
clickElement('labelContains', 'Позже', 1);
// картинка: дождаться кнопки «Нравится» и нажать
if (!clickImage('btn_like.png', 5)) {
return false;
}
// текст: прочитать полосу сверху
var lines = ocr([0.05, 0.1, 0.9, 0.12]);
logi(lines.text);
client.swipeUp(); // свайп как у человека
return true;
}Настоящая консоль и два реальных iPhone: синхронное управление, запись без кода, песочница для кода и расписание.
Консоль в облаке: откройте браузер — и она уже там. Подключите устройство, и оно появится в списке. Ничего не надо ставить, настраивать и обслуживать.
Разработчик не нужен. Выполните задачу один раз на трансляции: нажатия, свайпы и ввод станут шагами, а на выходе будет читаемый JavaScript.
API скриптов принимает аргументы по порядку: найти элемент, нажать на картинку или прочитать текст — одна строка, например clickElement('label', 'Войти'). Если ошибиться, сообщение об ошибке покажет исправленную строку.
Находит то, чего не видно в дереве элементов: поиск изображений по шаблону, поиск цвета в одной или нескольких точках и распознавание текста через Apple Vision — всё прямо на телефоне, без сети и без выгрузки скриншотов.
Нажатия в случайной точке области, случайные паузы и чистое состояние приложения в каждом круге; свайпы идут по траектории руки — с лёгким изгибом, сначала медленно, потом быстрее, с мелкой дрожью. Два запуска никогда не совпадают.
Экран устройства приходит в браузер в реальном времени, по возможности напрямую по P2P, минуя сервер; стена экранов показывает всю группу сразу, а нажимать и свайпать можно прямо по картинке.
Включите синхронизацию — и одно действие уходит на всю группу. Координаты передаются долями от 0 до 1, а не пикселями, поэтому устройства с разным разрешением работают вместе.
Автономные запуски по группе устройств, числу раз в день, окну и интервалу. Каждый шаг сам повторяется при сбое, задачи устройства, ушедшего в офлайн, забираются и переназначаются, а журнал показывает точный шаг, на котором всё сломалось.
Устройство ушло в офлайн, WDA не отвечает, задачи падают подряд, мало заряда или памяти — оповещение сразу уходит в WeCom, Telegram или ваш собственный webhook, а заряд, память и температура видны с первого взгляда.
Не нужно ставить сервер и что-то настраивать — для начала хватит одного iPhone.
Войдите в консоль и начинайте. Если данные должны оставаться в вашем дата-центре, весь сервис можно развернуть на ваших серверах.
Установите на iPhone приложение CloudClick iOS и WebDriverAgent и войдите — устройство появится в консоли. Сопутствующая утилита для Windows подписывает и устанавливает IPA и монтирует образ диска разработчика.
Запишите один раз на живом экране или пишите в песочнице кода, проверяя каждую строку на настоящем устройстве; когда всё работает, опубликуйте как задачу по группе устройств и окну времени — журналы приходят в реальном времени.
Остались вопросы? Напишите — отвечает инженер.
Не нужно. Подключите экран устройства и выполните задачу один раз: нажатия, свайпы и ввод сами станут шагами. Там, где шаг должен идти по элементу, а не по координате, откройте инспектор и щёлкните узел — выражение локатора подставится само. На выходе читаемый JavaScript, так что при желании его можно править дальше.
Нет. Аргументы идут по порядку, а каждое действие — одна строка: clickElement('label', 'Войти'), findImage('btn.png', 5), ocr(). В песочнице кода в консоли есть краткий справочник API, автодополнение и инспектор элементов, так что каждую строку можно сразу запустить на настоящем устройстве.
В рекордере нет фиксированных координат по умолчанию: нажатие приходится в случайную точку области, паузы и свайпы задаются диапазонами, а не точными значениями, траектория свайпа слегка изгибается, идёт от медленного к быстрому с мелкой дрожью, а каждый круг сначала закрывает приложение и начинает с чистого состояния. Два запуска никогда не совпадают.
Да. Он использует встроенный в систему фреймворк Apple Vision прямо на телефоне — без сети и без выгрузки скриншотов — и читает китайский, английский, японский, корейский и другие языки (для китайского нужна iOS 14 или новее). Поиск изображений и цветов тоже выполняется на телефоне.
Да. Управляющий узел — статически слинкованный бинарник на Go без привязки к версии glibc. Дайте ему MongoDB, поднимите через supervisor, поставьте впереди nginx — данные и устройства остаются у вас.
Да. Доступ к скрипту выдаёт другому аккаунту право его запускать, при желании со сроком действия. Параметры при этом раздельные, поэтому один и тот же скрипт работает у каждого со своим набором.
Сейчас нет. Всё работает на реальных устройствах iOS через WebDriverAgent, и рантайм скриптов построен вокруг него. Android в текущую версию не входит.
Возьмите одно реальное устройство и одну задачу, которую повторяете каждый день. Мы подключим экран, один раз запишем и один раз прогоним — при вас. Решать будете после.