Автозаполнение полей с помощью Adb и внешних инструментов
18 февраля 2023 г.Я написал предыдущую статью, в которой рассказывается о том, как ускорить выполнение однотипных операций по заполнению полей с помощью скрипта kotlin (kts). Несмотря на все свои преимущества, автозаполнение можно еще больше ускорить с помощью низкоуровневого языка bash и использования горячих клавиш.
Выбор примера
Мы будем использовать тот же пример, что и в последней статье. .
Вы можете скачать полный код здесь:
https://gist.github.com/d8b96ef6d97927e811cfa292071d824a
https://gist.github.com/6616b63942b3ec90ccf1fb4ad0329953
https://gist.github.com/2c1a7e43b0b2d38c21af75d139e6ac4d
Напомню, что для перехода на MainActivity поля должны быть заполнены, а их значения должны соответствовать определенным требованиям:
электронная почта: login@gmail.com
тел.: +1 650 123 4567
пароль: 123456
Вот видео, как это выглядит, если поля заполняются вручную:
Также в прошлой статье мы нашли все необходимые команды adb для заполнения всех текстовых полей и нажатия на кнопку. Вот полный список:
adb shell input tap 72 1092
adb shell input text 'login@gmail.com'
adb shell input tap 72 1227
adb shell input text '+1 650 123 4567'
adb shell input tap 72 1362
adb shell input text 123456
adb shell input tap 72 1497
Настройка внешних инструментов для одной команды
Попробуем сначала заполнить одну строку. Для этого мы будем использовать связку инструментов Внешние инструменты + Adb + bash.
Давайте запустим LoginActivity и коснёмся поля с помощью терминала:
adb shell input tap 72 1092
Все должно работать.
Далее мы идем: Android Studio > Настройки > Инструменты > Внешние инструменты.
Это инструмент, который позволяет запускать команды и внешние скрипты или программы внутри Android Studio. Вы также можете передавать туда аргументы.
Однако есть ряд ограничений по сравнению с терминалом. Например, вы не можете передать несколько команд.
Вы можете прочитать больше здесь.
Давайте разбираться.
Нажмите на значок Добавить («+»). Введем следующие значения:
Имя: my_adb
Программа: /Users/{ваше имя}/Library/Android/sdk/platform-tools/adb
Аргументы: adb shell input tap 72 1092 (вставьте всю строку)
Рабочий каталог: $ProjectFileDir$ (обычно добавляется сам)
Давайте сэкономим:
Теперь перейдите к: Инструменты > Внешние инструменты > мой_adb
Если все сделано правильно, должно запуститься окно терминала и команда будет выполнена.
Поразительно, что команда adb выполнялась намного быстрее, чем скрипт kotlin.
Настройка внешних инструментов для нескольких последовательных команд
Нам удалось выполнить одну команду adb с помощью внешних инструментов. Однако реальность такова, что чаще всего необходимо вводить несколько последовательных команд.
Давайте попробуем этого добиться.
Вернемся к окну редактирования команды. Как видите, здесь нельзя ввести более одной команды:
n
На это также указывает официальная поддержка Jet Brains
Но, напомню, что для достижения результата нам нужно ввести список команд:
adb shell input tap 72 1092
adb shell input text 'login@gmail.com'
adb shell input tap 72 1227
adb shell input text '+1 650 123 4567'
adb shell input tap 72 1362
adb shell input text 123456
adb shell input tap 72 1497
Для этого есть обходной путь: создайте bash-скрипт и вставьте в него эти команды. И через External Tools запустить этот скрипт. Вот что мы сделаем:
- Откройте текстовый редактор
- Вставьте туда строки
- Сохранить как my_bash.bash
- Выполните команду chmod +x /Users/{ваше имя}/Downloads/my_bash.bash
Вставьте путь в терминал и попробуйте выполнить через него:
Если все сделано правильно, команда должна выполниться, а поля на устройстве должны быть заполнены.
- Затем перейдите в раздел Android Studio > Настройки > Инструменты > Внешние инструменты.
- Создание новой команды:
Имя: my_bash
Программа: /Users/{ваше имя}/Downloads/my_bash.bash (путь к файлу)
- Сохранить
- Выполнить Инструменты > Внешние инструменты > мой_баш.
Если все сделано правильно, команда должна выполниться, а поля на устройстве должны быть заполнены.
На видео это выглядит примерно так:
https://youtube.com/shorts/R484DB_RScc?feature=share р>
Видно, что поля заполняются в разы быстрее, чем при ручном вводе.
Как и в случае со скриптом kotlin, если вам нужно время от момента ввода одной команды до другой, вы можете установить задержку сна (сек).
adb shell input tap 72 1092
sleep 1
adb shell input text 'login@gmail.com'
Есть еще одна оптимизация, которую можно сделать — установить горячие клавиши для конкретной команды.
Для этого перейдите в Android Studio > Настройки > Карта ключей > Внешние инструменты > Внешние инструменты.
Далее найдите команду и установите горячие клавиши, например, в моем случае Control+Option+Command+B.
Сохранить.
Попробуйте выполнить это и убедитесь, что все работает. Это второе преимущество по сравнению с скриптом kotlin — вы можете установить горячие клавиши для выполнения команды.
Заключение
Небольшая оптимизация часто повторяющихся операций в процессе разработки приводит к долгосрочной экономии времени и ресурсов. В примере, рассмотренном в этой статье , мы сэкономили время, автоматически заполнив поля авторизации с помощью скрипта kotlin, выиграв несколько десятков секунд. В текущем примере мы сэкономили еще несколько секунд, используя язык более низкого уровня и горячие клавиши. Через год сэкономленные секунды превратятся в часы.
Оригинал