Programing

ADB를 사용하여 sendevent 명령을 사용하여 장치에 터치 이벤트를 보내는 방법은 무엇입니까?

lottogame 2020. 10. 7. 07:12
반응형

ADB를 사용하여 sendevent 명령을 사용하여 장치에 터치 이벤트를 보내는 방법은 무엇입니까?


UI 테스트를위한 몇 가지 기본 자동화를 수행 할 수 있도록 AndroidDebugBridge를 사용하여 기기에 터치 이벤트를 보내려고합니다. 나는 LINK 에서 토론을 따랐다 . sendevent를 사용하여 에뮬레이터에서 터치를 시뮬레이션 할 수 있지만 장치에서는 동일하게 수행 할 수 없습니다.

위의 링크에서와 같이 에뮬레이터는 각 터치에 대해 6 개의 이벤트 (xcoord, ycoord, 2는 보도, 2는 릴리스)를 보내는 것으로 보이며이 정보를 사용하여 이벤트를 보내는 것은 쉬웠지만 장치의 터치 스크린에 대한 getevent는 다음과 같은 것 같습니다. 너무 많은 이벤트를 생성합니다.

누군가 ADB에서 장치로 터치를 보낼 수 있습니까? 해결책을 공유해 주시겠습니까?


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는 십진수로 757 및 1694 인 16 진수 위치 2f5, 69e에서 키를 눌렀 음을 알려줍니다 (버튼 누름).

이제 동일한 이벤트를 생성하려는 경우 동일한 위치에서 입력 탭 명령을 사용할 수 있습니다.

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, just input keyeventand input textyou can use the monkeyrunner for it : (this is a copy of the answer at 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)

드래그를하거나 활동을 시작할 수도 있습니다 . MonkeyDevice api를 살펴보세요 .


사용할 필요가 없습니다

adb 쉘 getevent -l

명령을 실행하려면 장치의 개발자 옵션에서 [터치 데이터 표시]를 활성화하면 X와 Y를 얻을 수 있습니다.

더 많은 정보는 여기 내 기사에서 찾을 수 있습니다 : https://mobileqablog.wordpress.com/2016/08/20/android-automatic-touchscreen-taps-adb-shell-input-touchscreen-tap/


Android의 uiautomator , adb shell uiautomator [...]를 사용하거나 SDK와 함께 제공되는 .jar를 직접 사용하는 것을 고려하십시오 .

참고 URL : https://stackoverflow.com/questions/3437686/how-to-use-adb-to-send-touch-events-to-device-using-sendevent-command

반응형