使用ADB发送模拟touch的操作

有时候为了特殊的测试需求,我们需要使用ADB发送模拟touch的操作,就可以用到下面的方法,

1. 使用input工具里的tap参数模拟touch的操作 

adb shell input tap x y
十分简单,也不需要知道是哪个eventX;另外,input还有其他参数,功能很强大,help文档如下,

# input                                                        
Usage: input [<source>] <command> [<arg>...]

The sources are: 
      trackball
      joystick
      touchnavigation
      mouse
      keyboard
      gamepad
      touchpad
      dpad
      stylus
      touchscreen

The commands and default sources are:
      text <string> (Default: touchscreen)
      keyevent [--longpress] <key code number or name> ... (Default: keyboard)
      tap <x> <y> (Default: touchscreen)
      swipe <x1> <y1> <x2> <y2> [duration(ms)] (Default: touchscreen)
      press (Default: trackball)
      roll <dx> <dy> (Default: trackball)
从上面的帮助文档,我们看到input还可以模拟文字输入(text)和滑动(swipe),十分好用。

2. 使用getevent获得事件信息

输入“adb shell getevent”,我们可以看到一直有信息吐出来,类似下面的信息,但他们是不是touch的event呢?

如果我们没有触碰touch,一直有event出来,那么这些event确定不是touch的event;touch的event只有当触摸touch的时候才会出来,这样,我们就知道如何录得正确的event了。

比如,当我们触碰touch的时候,有event1出来,则说明touch是通过event1发出的;我们可以使用命令“getevent | grep event1”只记录touch的event。

/dev/input/event1: 0003 0001 00000293
/dev/input/event1: 0000 0000 00000000
/dev/input/event1: 0003 0039 ffffffff
/dev/input/event1: 0001 014a 00000000
/dev/input/event1: 0003 0018 00000000
/dev/input/event1: 0000 0000 00000000
3. 其他模拟touch event的方法

还可以通过sendevent来模拟touchevent,不过比较繁琐,方法如下,

a. 设置x/y坐标

adb shell sendevent /dev/input/event1 3 0 x
adb shell sendevent /dev/input/event1 3 1 y
b. 发送touch 事件(必须使用0 0 0配对)

adb shell sendevent /dev/input/event1 1 330 1
adb shell sendevent /dev/input/event1 0 0 0
c.  释放touch事件(必须使用0 0 0配对)

adb shell sendevent /dev/input/event1 1 330 0
adb shell sendevent /dev/input/event1 0 0 0 









评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值