android使用shell command实现对设备控制,实现按坐标点击

目的:实现自动化测试,
方法:使用adb shell命令。
难点,factory无法使用sendkey event 执行, 需要使用sendevent按照坐标点击.
虽然是dev下的文件是设备,但是实时的数据是在/proc/这个目录下对应的文件里。
解决难点过程,使用cat /proc/bus/input/devices > log.txt 活得设备输入信息。
从设备的信息中可以看出触摸屏lm75对应的设备input0(name为lm75的设备,Handlers对应的是event0)
然后查看/dev/input/event0的记录信息。
然后把输入信息解析成10进制 ,然后发送给设备, 如下。

        self.extDevice.shellCommand("sendevent /dev/input/event0 3 48 88")
        self.extDevice.shellCommand("sendevent /dev/input/event0 3 50 10")
        self.extDevice.shellCommand("sendevent /dev/input/event0 3 53 908")
        self.extDevice.shellCommand("sendevent /dev/input/event0 3 54 884")
        self.extDevice.shellCommand("sendevent /dev/input/event0 0 2 0")
        self.extDevice.shellCommand("sendevent /dev/input/event0 0 0 0")
        self.extDevice.shellCommand("sendevent /dev/input/event0 0 2 0")
        self.extDevice.shellCommand("sendevent /dev/input/event0 0 0 0")

大功搞成。(well done.)
参考过文档如下:

android手机上sendevent的命令在一些手机上失效, 比如htc wildfire貌似使用sendevent的ball事件就没有响应, 在nexus one上ball event ok,但touch event fail... pity, 有没有解决的办法?

我也遇到这个问题,好像back键都不起作用:
adb shell sendevent dev/input/event0 1 158 1
adb shell sendevent dev/input/event0 1 158 0

 

adb shell sendevent /dev/input/event2 1 330 1
adb shell sendevent /dev/input/event2 3 48 18
adb shell sendevent /dev/input/event2 3 50 1
adb shell sendevent /dev/input/event2 3 53 210 //x 坐标
adb shell sendevent /dev/input/event2 3 54 200 //y 坐标
adb shell sendevent /dev/input/event2 0 2 0
adb shell sendevent /dev/input/event2 0 0 0
adb shell sendevent /dev/input/event2 1 330 0
adb shell sendevent /dev/input/event2 0 2 0
adb shell sendevent /dev/input/event2 0 0 0

题的缘由是有个自动化测试的需求,我需要写脚本模拟点击触摸屏的一系列操作,以代替手工测试(话说~遇上连续启动1000次camera并且拍照后 退出这种变态测试,你们都是怎么做的?)。以此来证明:头儿,此bug真的解了!  
Linux上可以通过sendEvent来模拟键盘或者鼠标点击事件,而Android是 基于Linux2.6的,所以也可以模拟点击事件。网络文章很多都给出这样一段数据信息,告诉你怎么去实现模拟点击:
需要注意输入设备, 和输入据类型。我的是device0 十进制

Android相关内容:

猜你喜欢

转载自tcone.iteye.com/blog/1810964