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 十进制
方法:使用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 使用shell command实现对设备控制,实现按坐标点击
- Mac 上使用 Shell 脚本 + adb shell 实现简单的 Android 模拟点击自动化测试
- Android中使用自定义selector来实现view的点击效果以及view的显示样式
- 【android开发】使用PopupWindow实现页面点击顶部弹出下拉菜单
- Android使用RecyclerView实现自定义列表、点击事件以及下拉刷新
- Android开发——使用ADB Shell命令实现模拟点击(支付宝自动转账实现)
- Android 视图切换库的使用SwitchLayout(可实现控件点击动画,和界面切换时的各种动画)
- 基于mini2440嵌入式linux上整合一套Domoticz智能家居系统(九)使用domoticz+mosquitto+Android客户端实现控制mini2440上的LED(二)
- Android使用ViewPager实现导航页根据情况禁止滑动以及点击切换
- 使用Adb shell command直接送key event給Android
- android学习笔记---57_采用方向传感器实现指南针,android设备传感器介绍,以及使用方法
- Android 实现点击出现选择框,或者长按显示选择界面,PopupMenu的简单使用。
- 使用shell脚本实现USB设备的加载与文件复制
- 小白求助!!!请问Android 使用BroadCast实现强制下线功能,点击强制下线按钮,程序直接奔溃是为什么啊??
- 使用shell脚本实现android自动化测试
- Android使用libgdx实现模拟方向键控制角色移动的方法
- android selector 背景选择器的使用, button (未点击,点击,选中保持状态)效果实现
- Android中实现根据EditText中内容是否完整来控制按钮是否可点击
- 【手机变身无线音箱-WIFI流媒体传输】--音乐在PC和手机间双向播放-详解Android DLNA使用-使用DLNA实现不同设备间媒体共享
- 基于mini2440嵌入式linux上整合一套Domoticz智能家居系统(八)使用domoticz+mosquitto+Android客户端实现控制mini2440上的LED(一)