Хотя не имея вашего окружения, я изучил проблему.
Как и вы, можно найти различные статьи, которые, кажется, всегда работают для некоторых людей, но не для других.
Я пришел к выводу, что существуют различия между комбинациями аппаратного телефона /Android-версии /SDK-версии, которые делают его таким, что не существует единого решения для всех настроек.
Вам нужно будет выяснить, что работает для вас. помните, что серьезное обновление программного обеспечения всегда может вернуть вас к отправной точке.
Самый простой метод, который я нашел, это использовать команду input tap x y
:
adb shell input tap x y
Не все input
версии имеют параметр tap
, но запуск его без аргументов напечатает все доступные параметры и синтаксис:
shell@m0:/ $ input
input
usage: input ...
input text <string>
input keyevent <key code number or name>
input [touchscreen|touchpad|touchnavigation] tap <x> <y>
input [touchscreen|touchpad|touchnavigation] swipe <x1> <y1> <x2> <y2> [duration(ms)]
input trackball press
input trackball roll <dx> <dy>
Другой способ - использовать Getevent для записи событий, которые происходят при касании экрана. Как взято отсюда:
Запишите серию событий
Настройте компьютер для записи данных в файл (/tmp/android-touch-events.log
)
$ adb shell getevent | grep --line-buffered ^/ | tee /tmp/android-touch-events.log
- сделать что-нибудь по телефону
- остановите команду adb на компьютере с помощью
ctrl-c
Воспроизвести записанные события
Эта команда выполнит шестнадцатеричное преобразование в awk
$ awk '{printf "%s %d %d %d\n", substr($1, 1, length($1) -1), strtonum("0x"$2), strtonum("0x"$3), strtonum("0x"$4)}' /tmp/android-touch-events.log | xargs -l adb shell sendevent
Остерегайтесь ошибки, что Getevent отображает свои параметры в шестнадцатеричном виде, но принимает ввод только в десятичном виде, что пытается исправить вышеприведенный скрипт.
monkeyrunner - это еще один инструмент, который вы можете использовать, как показано здесь:
Вы можете использовать monkeyrunner, как это:
$ monkeyrunner
>>> from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice
>>> device = MonkeyRunner.waitForConnection()
>>> device.touch(200, 400, MonkeyDevice.DOWN_AND_UP)
Вы также можете выполнить перетаскивание, запустить активацию и т.д. Посмотрите API для MonkeyDevice.
Рекомендации: