Автозаполнение полей с помощью Adb и внешних инструментов

Автозаполнение полей с помощью 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

Вот видео, как это выглядит, если поля заполняются вручную:

https://youtu.be/oX3NIZMYpyo

Также в прошлой статье мы нашли все необходимые команды 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 запустить этот скрипт. Вот что мы сделаем:

  1. Откройте текстовый редактор
  2. Вставьте туда строки
  3. Сохранить как my_bash.bash
  4. Выполните команду chmod +x /Users/{ваше имя}/Downloads/my_bash.bash

Вставьте путь в терминал и попробуйте выполнить через него:

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

  1. Затем перейдите в раздел Android Studio > Настройки > Инструменты > Внешние инструменты.
  2. Создание новой команды:

Имя: my_bash

Программа: /Users/{ваше имя}/Downloads/my_bash.bash (путь к файлу)

  1. Сохранить
  2. Выполнить Инструменты > Внешние инструменты > мой_баш.

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

На видео это выглядит примерно так:

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, выиграв несколько десятков секунд. В текущем примере мы сэкономили еще несколько секунд, используя язык более низкого уровня и горячие клавиши. Через год сэкономленные секунды превратятся в часы.


Оригинал
PREVIOUS ARTICLE
NEXT ARTICLE