您的位置:首页 > 移动开发 > Android开发

Android 中 如何利用am input 命令做自动压力测试

2011-03-04 11:05 232 查看
在工作中,经常会有压力测试的需求,比如要测试Camera 在不同分辨率下联系拍100张照片,检查程序是否异常。Android 本身有很多种方法做压力测试,这里介绍最简单的测试方法,用am 和 input 命令实现。

就拿测试Camera 在不同分辨率下联系拍100张照片这一个例子来说,步骤如下:

1.启动camera 应用程序

adb shell am start -n com.android.camera/.Camera

2.模拟点击屏幕中间,把隐藏的菜单显示出来,为下一步选择不同分辨率做准备

input motionevent 25 25 down

input motionevent 25 25 up

也可以用下面的函数来简化代码:

function click()

{

adb shell input motionevent $1 $2 down

adb shell input motionevent $1 $2 up

}

click 25 25

3.模拟点击屏幕,弹出不同分辨率的选择。

click 100 150

4.选择分辨率

click 100 150

5.拍照

adb shell input keyevent 27 #camera key pressed

至此,程序已经实现了模拟屏幕点击,按键的操作,下面在看看看如何实现模拟滑动的步骤。

1.首先检查手机的input 是否支持滑动功能。

1.1 adb shell

1.2

# input

input

usage: input [text|keyevent]

input text <string>

input keyevent <event_code>

input motionevent <x> <y> <down|move|up>

input motionevent-batch <pointer-log>

2.如果有支持move功能,那么就直接输入下面的几条语句,就能实现一个模拟滑动的操作。如果不支持move,需要修改input的程序源代码,打开move功能,重新编译并生成input 程序,input 应用的代码在frameworks/base/cmds/input目录下。

input motionevent 190 277 down

input motionevent 200 277 move

input motionevent 210 277 move

input motionevent 220 277 move

input motionevent 230 277 move

input motionevent 264 277 move

input motionevent 264 277 up

也可以用function来简化代码。

move_vertical_down()

{

#x,y1,y2.move from x,y1 to x,y2

const_x=$1

start_y=$2

end_y=$3

myinput $const_x $start_y down

while [ $start_y -le $end_y ]; do

start_y=$((start_y+5))

myinput $const_x $start_y move

done

myinput $const_x $start_y up

}

move_vertical_down 100 200 300

这里关键的一点是要记住move需要下面的执行顺序,其中x,y是绝对坐标值。

input x,y,down

input x,y,move

input x,y,up

如果不知道坐标的绝对值,可以使用google提供的hierarchyviewer.bat工具,它可以非常方便的获取各个点的坐标值。

如下图,可以知道屏幕的保存按钮左上角的坐标为0,219 ,高宽为160。

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: