업무를 진행하던 도중 특정 작업을 반복 하여 테스트할 일이생겼는데
이전 회사에서 adb를 이용해 안드로이드를 자동으로 클릭 하도록 하는것이 기억나서 해당 정보를 찾아 진행하였다
해당 포스팅에서는 adb가 깔려 있다는 가정으로 진행하였습니다.
굳이 adb shell에 진입하지 않고 adb shell input tap 979 330을 입력해도 해당 명령어를 실행할수 있지만 adb shell 명령어를 많이 사용할때는 adb shell에 진입해서 작업하는게 편하다 이번 포스팅에서는 많은 작업을 하지 않기때문에 adb shell에 진입하지 않아도 되지만 공부를 위해 진입까지 해보겠습니다.
우선 adb 명령어를 이용하는 방법을 알아보겠습니다.
1. adb shell에 진입한다.
cmd 창에서 adb shell을 입력하여 들어갑니다.
AVD가 실행되어있고 자신이 실제로 연결한 기기를 클릭하고 싶다면 AVD를 종료하고 adb shell을 입력하거나 adb device 명령어를 이용해서 시리얼 번호를 구한후 아래 명령어를 이용해 접근한다.
adb devices // 해당 명령어를 이용해서 시리얼 번호를 구한다
adb -s <시리얼 번호> shell
ex) adb -s 1234567890abcdef shell
2. 자신이 클릭할곳의 좌표를 구한다.
getevent -lt
adb shell에 진입한 후 해당 명령어를 이용하여 자신이 클릭할곳의 포지션을 구한다.
클릭하면 이런식으로 나올텐데 우리는 이중 ABS_MT_POSITION_X, ABS_MT_POSITION_Y를 이용하여 값을 구할것이다.
[ 98642.434509] /dev/input/event1: EV_ABS ABS_MT_TOUCH_MAJOR 00000008
[ 98642.434509] /dev/input/event1: EV_ABS ABS_MT_TOUCH_MINOR 00000008
[ 98642.434509] /dev/input/event1: EV_ABS ABS_MT_WIDTH_MAJOR 0000000f
[ 98642.434509] /dev/input/event1: EV_ABS ABS_MT_PRESSURE 0000000f
[ 98642.434509] /dev/input/event1: EV_ABS ABS_MT_POSITION_X 0000039c
[ 98642.434509] /dev/input/event1: EV_ABS ABS_MT_POSITION_Y 000005d6
[ 98642.434509] /dev/input/event1: EV_ABS ABS_MT_TRACKING_ID 0000099c
[ 98642.434509] /dev/input/event1: EV_KEY BTN_TOUCH DOWN
[ 98642.434509] /dev/input/event1: EV_SYN SYN_REPORT 00000000
[ 98642.442845] /dev/input/event1: EV_ABS ABS_MT_WIDTH_MAJOR 0000001c
[ 98642.442845] /dev/input/event1: EV_ABS ABS_MT_PRESSURE 0000001c
[ 98642.442845] /dev/input/event1: EV_SYN SYN_REPORT 00000000
[ 98642.451001] /dev/input/event1: EV_ABS ABS_MT_WIDTH_MAJOR 00000027
[ 98642.451001] /dev/input/event1: EV_ABS ABS_MT_PRESSURE 00000027
[ 98642.451001] /dev/input/event1: EV_SYN SYN_REPORT 00000000
[ 98642.459376] /dev/input/event1: EV_ABS ABS_MT_WIDTH_MAJOR 00000031
[ 98642.459376] /dev/input/event1: EV_ABS ABS_MT_PRESSURE 00000031
[ 98642.459376] /dev/input/event1: EV_SYN SYN_REPORT 00000000
[ 98642.467519] /dev/input/event1: EV_ABS ABS_MT_TOUCH_MINOR 00000007
[ 98642.467519] /dev/input/event1: EV_ABS ABS_MT_WIDTH_MAJOR 00000039
[ 98642.467519] /dev/input/event1: EV_ABS ABS_MT_PRESSURE 00000039
[ 98642.467519] /dev/input/event1: EV_ABS ABS_MT_POSITION_X 0000039d
[ 98642.467519] /dev/input/event1: EV_SYN SYN_REPORT 00000000
[ 98642.475865] /dev/input/event1: EV_ABS ABS_MT_WIDTH_MAJOR 00000040
[ 98642.475865] /dev/input/event1: EV_ABS ABS_MT_PRESSURE 00000040
[ 98642.475865] /dev/input/event1: EV_ABS ABS_MT_POSITION_X 0000039e
[ 98642.475865] /dev/input/event1: EV_SYN SYN_REPORT 00000000
[ 98642.484395] /dev/input/event1: EV_ABS ABS_MT_WIDTH_MAJOR 00000038
[ 98642.484395] /dev/input/event1: EV_ABS ABS_MT_PRESSURE 00000038
[ 98642.484395] /dev/input/event1: EV_ABS ABS_MT_POSITION_X 0000039f
[ 98642.484395] /dev/input/event1: EV_ABS ABS_MT_POSITION_Y 000005d5
[ 98642.484395] /dev/input/event1: EV_SYN SYN_REPORT 00000000
[ 98642.492490] /dev/input/event1: EV_ABS ABS_MT_TOUCH_MAJOR 00000000
[ 98642.492490] /dev/input/event1: EV_ABS ABS_MT_TOUCH_MINOR 00000000
[ 98642.492490] /dev/input/event1: EV_ABS ABS_MT_WIDTH_MAJOR 00000000
[ 98642.492490] /dev/input/event1: EV_ABS ABS_MT_PRESSURE 00000000
[ 98642.492490] /dev/input/event1: EV_ABS ABS_MT_TRACKING_ID ffffffff
[ 98642.492490] /dev/input/event1: EV_KEY BTN_TOUCH UP
[ 98642.492490] /dev/input/event1: EV_SYN SYN_REPORT 00000000
자 이곳에서
[ 98642.434509] /dev/input/event1: EV_ABS ABS_MT_POSITION_X 0000039c
[ 98642.434509] /dev/input/event1: EV_ABS ABS_MT_POSITION_Y 000005d6
이 값이 우리가 클릭할좌표인데 X, Y값이 16진수로 나와있다. 이제 해당값을 10진수로 변환하면된다.
내가 클릭한곳의 좌표는 X는 924, Y는 1494이다.
3. 명령어를 이용해 클릭한다.
자 이제 아래 명령어를 이용하면 클릭이 가능하다.
input tap 924 1494
4. 배치 파일을 만든다.
이제 위에서 구한 좌표값으로 배치파일을 만든다.
그후 cmd창을 이용해 해당 배치파일이 있는곳으로 이동후 실행하면된다.
-> 폴더창에서 경로가 나오는곳에 cmd창을 입력하면 해당위치의 cmd창이 열린다.
예시로 배치파일 하나를 첨부하겠다. 해당 배치파일을 입맛에 맞게 수정해서 사용하면 된다.
해당 파일은 필자가 사용한 파일이라 좌표값이 포스팅한 좌표와 조금 다르다
batch
@echo off
:loop
adb shell input tap 979 330
timeout /t 1 /nobreak > nul :: 1초 대기
adb shell input swipe 979 330 979 330 2000 :: 979 330을 2초동안 클릭
goto loop :: 반복
혹은 아래처럼 디바이스를 직접 지정할수있다.
시리얼 번호를 구하는 방법은 1번 참고
batch
@echo off
:loop
adb -s <시리얼넘버> shell input tap 979 330
timeout /t 1 /nobreak > nul
adb -s <시리얼넘버> shell input swipe 979 330 979 330 2000
goto loop
'프로그래밍 > Android' 카테고리의 다른 글
[Android] scrcpy 소리안나는 이슈 (1) | 2024.10.02 |
---|---|
[Android] APK파일 디컴파일 사이트 (1) | 2024.09.23 |
[Android] Context와 메모리 누수 (0) | 2024.08.01 |
[Android] Retrofit에 Header 추가하기 (0) | 2024.03.21 |
[Android] Drag And Drop View 예제 (0) | 2024.03.04 |
댓글