Как использовать ADB для отправки сенсорных событий на устройство с помощью команды sendevent?



Я пытаюсь отправить сенсорные события на устройство с помощью AndroidDebugBridge, так что я могу сделать некоторые основные автоматизации для тестов пользовательского интерфейса. Я следил за дискуссией в ссылке. Я могу использовать sendevent для имитации прикосновения к эмуляторам, но не могу сделать то же самое на устройстве.





кто-нибудь успел отправить прикосновение от ADB к устройству? Не могли бы вы поделиться решением.

565   5  

5 ответов:

Android поставляется с input инструмент командной строки, который может имитировать различные события ввода. Чтобы имитировать нажатие, это:

input tap x y

вы можете использовать оболочку adb ( > 2.3.5) для удаленного запуска команды:

adb shell input tap x y

для того, чтобы сделать определенное действие (например, чтобы открыть веб-браузер), вам нужно сначала выяснить, где нажать. Для этого вы можете сначала запустить:

adb shell getevent -l

как только вы нажмете на устройство, в нужном месте, вы увидите этот вывод:

<...>
/dev/input/event3: EV_KEY       BTN_TOUCH            DOWN
/dev/input/event3: EV_ABS       ABS_MT_POSITION_X    000002f5
/dev/input/event3: EV_ABS       ABS_MT_POSITION_Y    0000069e

adb говорит вам, что клавиша была нажата (кнопка вниз) в позиции 2f5, 69e в шестнадцатеричном формате, который составляет 757 и 1694 в десятичном формате.

если теперь вы хотите создать то же самое событие, вы можете использовать введите команду крана в том же положении:

adb shell input tap 757 1694

дополнительную информацию можно найти по адресу:

https://source.android.com/devices/input/touch-devices.html http://source.android.com/devices/input/getevent.html

2.3.5 не было input tap, просто input keyevent и input text Вы можете использовать monkeyrunner для этого: (это копия ответа на https://stackoverflow.com/a/18959385/1587329):

вы можете использовать monkeyrunner такой:

$ monkeyrunner
>>> from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice
>>> device = MonkeyRunner.waitForConnection()
>>> device.touch(200, 400, MonkeyDevice.DOWN_AND_UP)

вы также можете сделать драг, старт мероприятия и т. д. Взгляните на api для MonkeyDevice.

рассмотрите возможность использования Android uiautomator, С adb shell uiautomator [...] или непосредственно с помощью .jar, который поставляется с SDK.

вам не нужно использовать

adb shell getevent-l

, вам просто нужно включить в настройках разработчика на устройстве [показать сенсорные данные], чтобы получить X и Y.

дополнительную информацию можно найти в моей статье здесь: https://mobileqablog.wordpress.com/2016/08/20/android-automatic-touchscreen-taps-adb-shell-input-touchscreen-tap/

Comments

    Ничего не найдено.