Android Manager - модуль для управления android эмуляторами

Делитесь модулями
  • @alex911 кликайте по xpath, зачем вам кликать по координатам, если вы не знаете где их взять?

    В старт посте есть пример шаблона, где все максимально подробно расписано. Скачайте и посмотрите.

  • Через модуль видно все элементы что есть в текущем окне приложения по XPATH. Просто через adb было такое что видно было только то,что показано в текущем окне,а до остальных элементов нужно было скроллить

  • Такими темпами Паша Дуглас останется без лохов клиентов хD
    За модуль респект, молодец что начал работу в этом направлении!

  • Круто.. Но немного не понятно с настройкой.. Мануал б подробный для не далеких))))

  • @znuker XML априори только текущего экрана видно, во всех библиотеках так.

  • Для Nox, если сначала ввести в консоли:

    adb connect 127.0.0.1:62001
    

    То после этого модуль видит эмулятор. Но почему - то не все действия работают.
    Пробовал открывать ссылку в браузере, смотреть установленные программы, это все работает.
    Но вот приложения не запускаются, просто ничего не происходит.

    Так же в переменные среды добавлял первым папку с Nox и тогда не нужно было вручную подключаться через консоль и модуль сразу видел эмулятор. Но что так, что с подключением через консоль запуск приложений не работает. Gow устанавливал, ничего не изменилось.

    Кстати еще из возможных проблем почему нет подключения. В Nox отладка по USB включается в скрытом меню для разработчиков, а в Bluestacks в настройках приложения.

  • @spacerange да, эта команда вроде как нужна для реальных телефонов, видимо и для нокса тоже. Что с телефонами, что с ноксом 100 лет не работал.

    По поводу открытия приложений, там обычная adb команда:

    adb shell am start -n activityName
    

    Вместо activityName - ваше активити. Возможно, вместо активити название приложения вводите. Попробуйте руками в cmd выполнить.

    Активити можно получить через модуль действием "Получить активити". Перед этим открыв приложение. Еще удобно смотреть через аппку Lucky Patcher. Там же можно, кстати, выключать рекламу и пермишенсы у прил.

  • @thepappo said in AndroidManager - модуль для управления android эмуляторами:

    Вместо activityName - ваше активити. Возможно, вместо активити название приложения вводите. Попробуйте руками в cmd выполнить.
    Активити можно получить через модуль действием "Получить активити". Перед этим открыв приложение.

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

    Так же почему - то когда подключился через adb connect, то у меня перестало работать действие получить активити, выдавало ошибку. Сделал снова как раньше, добавил в переменные среды папку с Nox и все заработало.

  • @thepappo Закрытие приложения работает, а очистить кеш почему - то выдает ошибку:

    Процесс завершился с кодом: 1. Ошибка: Android Debug Bridge version 1.0.36 Revision 0e9850346394-android -a - directs adb to listen on all interfaces for a connection -d - directs command to the only connected USB device
    

    Свайп:

    Error: Error occured while sending post command to server on device connect ECONNREFUSED 127.0.0.1:9008
    
  • @spacerange это опять же ошибки adb. Вообще через adb нокса подключаться не очень правильно. Там старая версия. Его лучше переименовать в _adb.exe. А использовать adb из Android Studio SDK. Я позже потестирую на ноксе. Сейчас занят апдейтом модуля по части многопотока и некоторых других фишек.

  • @thepappo said in AndroidManager - модуль для управления android эмуляторами:

    @spacerange это опять же ошибки adb. Вообще через adb нокса подключаться не очень правильно. Там старая версия. Его лучше переименовать в _adb.exe. А использовать adb из Android Studio SDK. Я позже потестирую на ноксе. Сейчас занят апдейтом модуля по части многопотока и некоторых других фишек.

    В свое время делал многопоток на голом adb + nox, правда писал на nodejs но можно было тоже самое написать в БАС. Я к тому что мне кажется на adb меньше гемора чем с этим фреймворком, который в модуле, он мне еще тогда не понравился.

  • А вообще советую для всех у кого ошибки adb или связанные с селекторами, проделать следующие процедуры:

    1. Скачать и установить Node JS.
    2. Установить пакет appium-doctor
    npm install appium-doctor -g
    
    1. И прочекать для андроида:
    appium-doctor --android
    

    Вот эти пункты должны быть ОК:
    Screenshot_1.png

  • @UserTrue основная проблема - это получение xml дампа. Он нужен, чтобы искать элементы по xpath. Если на голом adb, то его можно дергать через:

    adb shell uiautomator dump
    

    Проблема в том, что тут используется первая версия юиавтоматора и действие занимает 2,5-3 секунды, что овер долго. Плюс, уже сам гугл давно отказался от поддержки первой версии.

    Во второй версии юиавтоматора уже как раз надо запускать appium сервер и ставить драйвер uiautomator2. На сервер уже посылаются запросы через REST API, и сервер отправляет команды на эмуль. Это работает на порядок быстрее, чем первая версия юиавтоматора. Тот же дамп делает практически мгновенно.

    Короче. Я написал уже все. Надо только собрать модуль, что самое сложное. Ты, думаю, меня понимаешь ))

  • @thepappo said in AndroidManager - модуль для управления android эмуляторами:

    @spacerange это опять же ошибки adb. Вообще через adb нокса подключаться не очень правильно. Там старая версия. Его лучше переименовать в _adb.exe. А использовать adb из Android Studio SDK. Я позже потестирую на ноксе. Сейчас занят апдейтом модуля по части многопотока и некоторых других фишек.

    Да это из за adb, я где - то видел рекомендацию заменить adb.exe из папки Android Studio SDK в папку Nox.
    Попробовал и свайп заработал, но очистка кеша уже теперь выдает другую ошибку, что - то типа неизвестная команда. Но да ладно, буду думать как использовать только Android Studio SDK, что - то никак не хочет к нему подключаться нормально.

  • @thepappo said in AndroidManager - модуль для управления android эмуляторами:

    adb shell uiautomator dump

    Да я через него и делал, это было года 3 назад )) Мне тогда не понравился вся эта затея и больше этим не занимался, хотя справедливости ради сделал рабочий многопоток для одной прилы. Тогда еще было много проблем с самими эмуляторами сейчас тот же nox работает гораздо лучше.

  • @UserTrue многопоток будет работать, конечно. Ну то есть асинхрон. Но скорость будет дно. Я сам на этой библиотеке пишу. Но в ноду ее не присрешь, поэтому было решено присрать аппиум, который по сути для этих задач максимально кошерен и для него есть норм врапперы на ноде.

  • Выяснил опытным путем что именно без Gow получить текущее активити не работает.
    То есть он обязателен для использования модуля. Очистить кеш так и выдает ошибку:

    SubprocessError: Процесс завершился с кодом: 1. Ошибка: adb.exe: unknown command adb 
    

    Удалил пути и оставил только Android Studio SDK, что по сути дало тоже самое когда я заменял adb.exe в папке Nox. Только теперь нужно вручную подключаться через команду adb connect. В appium-doctor у меня почему - то не было JAVA HOME, прописал вручную, ничего не дало.

    Очистить кеш выполнил командой:

    adb shell pm clear <package_name>
    
  • Еще при использовании UI Automator Viewer, заметил что он не может снять дамп пока BAS подключен к эмулятору, приходится переподключаться в консоли, снимать дамп и потом снова подключаться в BAS.

    А так, в целом модуль мне нравится, основное вроде как работает, да некоторые детали нужно допилить и еще есть определенные сложности с первоначальной настройкой (хотя может и мне так повезло).

  • Может кто сталкивался с проблемой вообще нет отклика на adb, в основной консоли cmd, установил android SDK, вроде всё настроил но как такового отклика нет, только если через консоль nox'a
    76a4aea1-4638-460c-8590-5f567f9435aa-image.png

  • @spacerange said in AndroidManager - модуль для управления android эмуляторами:

    В appium-doctor у меня почему - то не было JAVA HOME, прописал вручную, ничего не дало.

    Там не все версии Java вроде работают. У меня такая openjdk-8u282-b08. В папке с установленной джавой должна быть папка bin. Вот так выглядит:

    Screenshot_1.png

    @spacerange said in AndroidManager - модуль для управления android эмуляторами:

    Еще при использовании UI Automator Viewer, заметил что он не может снять дамп пока BAS подключен к эмулятору, приходится переподключаться в консоли, снимать дамп и потом снова подключаться в BAS.

    Да, есть такая проблема. По ходу вьювер и либа используют один и тот же порт для подключения. На новой версии такого не будет.