ADB 模拟点击、滑动事件
方案一:使用input子系统
1.adb shell input tap position_x position_y
tap模拟点击事件
position_x 为点击的横坐标,position_y 为点击的纵坐标
ps: 此方法需要知道点击的坐标值,可以打开设置-开发者选项中的报点和指针位置,辅助判断;也可以通过adb shell getevent -l ,查看ABS_MT_POSITION_X和ABS_MT_POSITION_Y获取,其中value值为000001d3和 000008d5,均为十六进制,可以通过转换器换算成十进制。
示范:adb shell input tap 140 2260
2.abd shell input swipe from_x from_y to_x to_y
swipe模拟滑动事件。可以左右滑动,可以上下滑动
from_x 为滑动起始横坐标,from_y 为滑动起始纵坐标
to_x 为滑动终点横坐标, to_y 为滑动终点纵坐标
示范:
左右滑动:adb shell input swipe 1065 1400 829 1537
上下滑动:adb shell input swipe 523 2399 591 2044
可以利用python完成循环
此方案响应速度较慢。有另外一种较快的方案如下
方案二:保存event事件到本地
adb shell
getevent -l
输入上述指令后,点击或者滑动屏幕以获取点击或滑动的系统事件节点
这里,我们获取到点击/滑动系统的事件节点为event3,接下来,我们来尝试把我们的操作记录下来。
cat /dev/input/event3 > /sdcard/event3
输入本条指令后,点击或者滑动(完成想要记录的动作)后,按ctr+c停止录制,即将自己的动作输入到文件管理中的event3文件中(新建的文件,可以有其他命名)
如果,我们打开手机的文件管理,打开后一般会发现这是个乱码文件
接下来来试着使用dd命令,将我们录制的动作文件/sdcard/event3替换至/dev/input/event3
dd if=/sdcard/event3 of=/dev/input/event3
ps:shell dd 指令,if 为输入文件,of 为输出文件
现在循环执行我们录制的动作,这个速度很快,可以选择sleep休眠一下,否则系统可能响应不过来
while : ; do dd if=/sdcard/event3 of=/dev/input/event3 ;sleep 5; done
此方案较方案一速度更快。