Android自动化解锁脚本实现解析

      Android自动化测试有很多方式,常见的包括MonkeyRunner,Robotium,SL4A,Java Instrumentation,Shell脚本等(随机点击的Monkey测试太过低级不在此列)。因测试需要,便在网上百度一下Android自动化测试脚本编写,自己动手完成Shell脚本,来通过脚本自动化测试一些需要的操作,有时候是非常的实用!

 参考文档:http://blog.csdn.net/xbalien29/article/details/12977047

手机上有很多输入设备,这些设备的编号每个手机都不同,因此我们需要首先了解这个手机上都有哪些输入设备,然后通过脚本操作这些输入设备,实现一些想要的操作,进而通过循环实现自动化测试。

 > adb shell cat /proc/bus/input/devices

这条命令就是显示系统的输入设备列表,自己需要去了解这些设备的含义,进而去操作这些设备!

选择一个合适的设备来进行我们的输入测试,对于大多数情况来说,一般只需要用到键盘和屏幕触摸输入,下面我们以屏幕触摸输入为例。将用到两个对应的命令:getevent和sendevent,顾名思义,一个是获取事件,另一个则是发送模拟事件。

 用getevent了解设备运作

 首先我们随便执行一条getevent来监听Handler event0(event0为屏幕事件):

 > adb shell getevent /dev/input/event0

滑动解锁便会输出这些event消息

但这些type和code究竟是什么意思呢?输入以下指令

 > adb shell getevent -p/dev/input/event0

了解这些event的含义,你才能写出自己想要实现操作的脚本!

有了以上知识作为基础,我们就可以开始着手编写我们自己的自动化测试脚本了

使用sendevent模拟事件

 先看看sendevent的使用方法:

 > adb shell sendevent –h

use: sendevent device type code value

先做个简单的测试,我们回到桌面准备模拟一遍刚才点击的动作,如果成功的话会进入刚刚那个app。利用sendevent编写模拟事件脚本lock_test.sh:

#!/bin/bash
###@fantasyhujian###
num=1
while true
do
adb shell sendevent /dev/input/event1 1$((0x14a)) $((0x01))
adb shell sendevent /dev/input/event1 3$((0x30)) $((0xc8))
adb shell sendevent /dev/input/event1 3$((0x35)) $((0x186))
adb shell sendevent /dev/input/event1 3$((0x36)) $((0x1d1))
adb shell sendevent /dev/input/event1 3$((0x32)) $((0x01))
adb shell sendevent /dev/input/event1 0$((0x02)) $((0x00))
adb shell sendevent /dev/input/event1 0$((0x00)) $((0x00))
##/***点击屏幕的解锁开始位置***/##
adb shell sendevent /dev/input/event1 3$((0x30)) $((0xc8))
adb shell sendevent /dev/input/event1 3$((0x35)) $((0x186))
adb shell sendevent /dev/input/event1 3$((0x36)) $((0x31d))
adb shell sendevent /dev/input/event1 3$((0x32)) $((0x01))
##/***下拉滑动解锁***/##
adb shell sendevent /dev/input/event1 0$((0x02)) $((0x00))
adb shell sendevent /dev/input/event1 0$((0x00)) $((0x00))
adb shell sendevent /dev/input/event1 3$((0x30)) $((0x00))
adb shell sendevent /dev/input/event1 1$((0x14a)) $((0x00))
adb shell sendevent /dev/input/event1 0$((0x00)) $((0x00))
##/***离开触屏,完成解锁***/##
sleep 2
adb shell sendevent /dev/input/event0 1$((0x74)) $((0x01))
adb shell sendevent /dev/input/event0 0$((0x00)) $((0x00))
adb shell sendevent /dev/input/event0 1$((0x74)) $((0x00))
adb shell sendevent /dev/input/event0 0$((0x00)) $((0x00))
##/***模拟按键锁屏,然后按开机键亮屏***/##
sleep 2
num=$(($num+1))
echo $num
done
##/***循环计数***/##

 以上脚本实现自动化滑动解锁,并完成计数!

 执行脚本,便可完成自动化滑动解锁测试!

这样我们成功的实现了一个滑动解锁测试,如果想模拟其他的动作,可以尝试自己动手观察一下设备接收到的事件,再通过脚本实现出来就行!







郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。