您的位置:首页 > 运维架构 > Shell

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

2012-03-21 15:23 549 查看
目的:实现自动化测试,

方法:使用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 十进制
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐