Android Manager - модуль для управления android эмуляторами
-
Название: AndroidManager
Версия: 2.8
Данные: AndroidManager.zip
Исходник: AndroidManager2.8.xml
Согласие на добавление модуля в BAS: Да
История версий:Модуль позволяет автоматизировать популярные действия на мобильных эмуляторах на базе Android. В работе используется сервер appium и драйвер uiautomator2, а для подключения к appium серверу - пакет webdriverio.
Возможности модуля:
- Многопоток за счет асинхронности. Работает быстрее большинства аналогичных open-source библиотек с классической многопоточностью.
- Возможность искать элементы по xpath, а не набору аттрибутов.
- Добавлены все популярные adb команды, а также действия, которых нет в appium, либо в webdriverio.
Инструкция по установке
- Скачать и установить Java jdk. Выбрать нужно версию Windows x64 Installer и именно jdk, а не jre и другие. На данный момент файл называется jdk-8u341-windows-x64.exe.
- Правый клик по "Мой компьютер" > "Дополнительные параметры системы" > "Переменные среды". В нижнем окне (системные переменные) нажать "Создать" и прописать название переменной JAVA_HOME, а в значении указать путь к установленной Java на предыдущем шаге.
- Скачать и установить Android Studio.
- Запустить Android Studio и нажать More actions.
- Выбрать пункт SDK Manager.
- Перейти на вкладку SDK Tools и установить Build-Tools и Platform-Tools, как на скрине. Если планируется подключать реальные телефоны, то нужно также установить Google USB Driver и Google Web Driver.
- Перейти обратно в "Переменные среды" (см. п.2). В переменных среды пользователя (верхнее окно) нажать "Создать" и прописать переменную ANDROID_HOME, значением которой указать путь к папке SDK.
- В нижнем окне найти переменную Path, выделить ее и нажать "Изменить".
- Добавить пути к папке bin в директории jdk, папкам SDK/platform-tools и SDK/build-tools.
- Скачать и установить Node JS. После установки нода предложит перезапустить ПК. Согласиться и перезапустить.
- Установить appium:
npm install -g appium
- Установить appium-doctor:
npm install -g appium-doctor
- Запустить appium-doctor с флагом --android для проверки, что все зависимости корректно установлены в системе.
appium-doctor --android
Отмеченные на скрине пункты у вас тоже должны быть зелеными.
Если на момент выполнения действий из данной инструкции в системе уже были установлены эмуляторы (Nox, MEmu и т.п.), то зачастую у них есть свои файлы adb.exe, которые также прописаны в переменных среды. В этом случае при подключении будет использоваться какой-то из этих файлов, а не adb из SDK.
Для фикса достаточно переименовать файлы adb в папке с эмулятором, например в _adb.exe.
Чтобы проверить расположение файлов adb в системе, нужно скачать утилиту gow.exe. После установки перезагрузить ПК.
После этого можно выполнить команду:
where adb
Она покажет пути к файлам adb, которые видимт система. Первый путь должен вести к папке SDK и быть примерно таким:
C:\Users\username\AppData\Local\Android\Sdk\platform-tools\adb.exe
Инструкция по запуску
Для взаимодействия с эмуляторами требуется запустить сервер appium. Делать это можно автоматически через модуль действием "Запустить сервер". Однако часто запущенный таким образом сервер не видит библиотека webdriverio. Поэтому настоятельно рекомендуется перед стартом вашего шаблона запускать сервер appium вручную. Делается это командой:
appium -a 127.0.0.1 -p 4723
где 127.0.0.1 - IP, на котором запускается сервер, 4723 - порт.
Если сервер запустился, то вы увидите примерной такой вывод:
Окно консоли нужно оставить открытым на все время работы шаблона. Чтобы остановить сервер, нужно в консоли нажать Ctrl+C.
Appium рекомендуется запускать на дефолтном порту 4723. Т.к. другой рандомный порт может быть уже занят каким-то системным процессом.
Пример шаблона
Шаблон, который устанавливает прокси на эмуляторы, а также позволяет включать прокси, если он выключен через приложение Drony: Drony.xml
Отправить на пиво :)
Модуль разрабатывается и поддерживается совершенного бесплатно. При этом на это тратится много сил и времени. Вы можете поддержать проект, отправив любую сумму. Это очень поможет в его дальнейшем развитии и внедрении нового функционала. Реквизиты под хайдом.
-
@thepappo Выглядит круто, спасибо!
-
Большое спасибо за ваши усилия. Я проверю это.
-
@thepappo нет возможности решения капчи внутри приложений??
-
@alex911 если речь про рекапчу (Google Safetynet), то она решается кликами. Для этого получаешь текст капчи и координаты области с изображениями. Делаешь скрин экрана. Получаешь размер экрана девайса. И кропишь изображение по координатам разницы между размером экрана и коррдинат картинок на капче. Текст и картинки отправляешь на сервис. В общем, также как и в обычном браузере.
В планах сделать экшен, который будет это все автоматизировать. Но это после решения проблемы с многопотоком. Вот тут писал.
-
@thepappo все сделал по инструкции которая в теме.не получается подключиться к эмулятору. помоги пожалуйста.
[710179332] [21:55:44] Поток №1 : Error: uiautomator-server: Error occured while getting installed APKs Command failed: adb -s shell pm list packages adb.exe: unknown command pm
-
@alex911 запусти хотя бы один эмулятор, открой консоль и выполни команду
adb devices
Что пишет? На каком эмуляторе запускаешь?
-
@thepappo said in AndroidManager - модуль для управления android эмуляторами:
adb devices
эмуль нокс.
C:\Users\Professional>adb devices
adb server version (36) doesn't match this client (41); killing...- daemon started successfully
List of devices attached
- daemon started successfully
-
@alex911 судя по логу ни один эмулятор не запущен. Запущенные девайсы имеют вид типа такого:
List of devices attached 127.0.0.1:21503 device
Для фикса нужно скачать утилиту gow.exe. После установки перезапустить ПК. Эта утилита позволяет выполнять linux команды в Windows.
После установки выполнить:
where adb
Если все ок, то должно вывести только один путь, этот, в папке с Sdk:
C:\Users\<USER_NAME>\AppData\Local\Android\Sdk\platform-tools\adb.exe
Этот путь берется из переменных среды. Часто при установке эмулятора, типа Nox или MEmu, они автоматически записывают свой путь в перменные среды, и в их папке тоже есть adb. Поэтому для фикса нужно переименовать adb.exe в папке эмулятора, например, в _adb.exe.
Все конфликтные пути к adb, опять же, видно при выполнении команды where adb. После переименования выполняем эту команду еще раз, в ее выводе должен остаться только один путь к Android Sdk, либо он должен идти первым.
Важно!
- Прежде чем задать вопрос, внимательно прочитайте тему. 90% что ваш вопрос уже решен и его решение уже расписано мной или кем-то из участников форума.
- Если не нашли ответа, гуглите. Это не сложно.
- Я не отвечаю в тг или в ЛС. Все кто пишут в тг блокируются.
- Если вы сами не хотите ни в чем разбираться и хотите чтобы я вам написал скрипт "где все просто и надо пару кнопок нажать" - можно. Цена от 40к.
Уважайте чужое время,
-
Кто-нибудь тестил? Кому-нибудь зашло?
-
@thepappo said in AndroidManager - модуль для управления android эмуляторами:
where adb
после манипуляций у меня такой ответ!
-
@alex911 said in AndroidManager - модуль для управления android эмуляторами:
@thepappo said in AndroidManager - модуль для управления android эмуляторами:
where adb
после манипуляций у меня такой ответ!
но в итоге в басе всеравно не конектится(
-
Так вроде работает многопоток. Протестил просто запуск приложения в 2 потока.
-
@thepappo автор,сделай мануал пожалуйста!как пользоваться? как нажимать по координатам,делать свайп,например.
-
This post is deleted!
-
@alex911 на скрине выше у тебя 2 пути выводится. Удали adb с первого. И выполни команду
adb devices
-
@hhop он работает только для действий, вызываемых без использования библиотеки uiautomator-server. Для действий, связанных с взаимодействием с элементами он работать не будет. При старте нового подключения, сервер удаляет предыдущее.
-
@alex911 есть же действия и для свайпа, и для клика, где все написано.
-
он только для эмуляторов? там физ тел что мешает автоматизировать?
-
@thepappo по коортдинатам?где взять координаты?