在Android中一般常见有4种模拟点击方法。分别是MotionEvent、ADB控制、Instrumentation、sendevent。
MotionEvent非常强大,可以单击,双击,滑动,甚至多点触控,但是印象中它好像是只能针对自己的view做控制,无法操作其它app的view。
ADB控制也可以轻松实现以上操作,
//模拟输入“001”
adb shell input text “001”
//模拟home按键
adb shell input keyevent 3
//模拟点击(540, 1104)坐标
adb shell input tap 540 1104
//模拟滑动,从(250,250)滑动到(300,300)
adb shell input swipe 250 250 300 300
但是需要借助adb工具并且效率不是很高。
Instrumentation同样也只能点自己的app。
sendevent非常强大,它不仅局限于模拟点击,还能做出模拟硬件按钮操作,比如声音键的控制(可惜要ROOT权限)。这里重点讲解一下这个方法。以下内容摘自CSDN
getevent可以获取用户的点击事件.
1).在cmd窗口中输入命令:adb shell getevent (输入adb命令的时候一定要配置android sdk环境变量)

2).点击我们app的确定按钮.就会获取设备汇报的事件.
3).我们可以看到点击一个按钮产生了12行信息,代表12个事件. 我来解释第一行信息: [设备名称] [类型] [code] [value]
有哪些类型请参考博客:http://blog.csdn.net/kickxxx/article/details/7482392
/dev/input/event7: 0001 014a 00000001
/dev/input/event7: 0003 003a 00000001
/dev/input/event7: 0003 0035 00000172
/dev/input/event7: 0003 0036 00000129
/dev/input/event7: 0000 0002 00000000
/dev/input/event7: 0000 0000 00000000
/dev/input/event7: 0001 014a 00000000
/dev/input/event7: 0003 003a 00000000
/dev/input/event7: 0003 0035 00000172
/dev/input/event7: 0003 0036 00000129
/dev/input/event7: 0000 0002 00000000
/dev/input/event7: 0000 0000 00000000
sendEvent事件的使用
1).我们用getEvent获取的值是16进制的,而sendEvent输入的值是10进制的,我这里把这些值转换了,并且增加了前缀"adb shell sendevent".
adb shell sendevent /dev/input/event7 0001 330 00000001
adb shell sendevent /dev/input/event7 0003 58 00000001
adb shell sendevent /dev/input/event7 0003 0053 00000370
adb shell sendevent /dev/input/event7 0003 0054 00000297
adb shell sendevent /dev/input/event7 0000 0002 00000000
adb shell sendevent /dev/input/event7 0000 0000 00000000
adb shell sendevent /dev/input/event7 0001 0330 00000000
adb shell sendevent /dev/input/event7 0003 0058 00000000
adb shell sendevent /dev/input/event7 0003 0053 00000370
adb shell sendevent /dev/input/event7 0003 0054 00000297
adb shell sendevent /dev/input/event7 0000 0002 00000000
adb shell sendevent /dev/input/event7 0000 0000 00000000
2).我们看到上面最后面一栏中有370跟297两个数,这是是点击的坐标在屏幕的位置.如果我们用点击事件,只需要改变这两个值就可.
3).把这些命令复制到粘贴板,我们输入这些命令,效果图如下:

这里讲解了sendevent跟getevent的使用,如果我们要给输入框输入值,只需要一条命令就行. adb shell input text 'ansen'
还有一些其他命令,参考博客:http://blog.sina.com.cn/s/blog_76550fd70101j2zs.html
本文链接:https://it72.com/12496.htm