본문 바로가기
프로그래밍/Android

[ADB] 배치 파일을 이용해서 화면이 자동으로 클릭되도록 설정

by Youngs_ 2024. 10. 15.

업무를 진행하던 도중 특정 작업을 반복 하여 테스트할 일이생겼는데

이전 회사에서 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


  

 

 

adb input tap auto.bat
0.00MB

댓글