在工作中,经常会有压力测试的需求,比如要测试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。

更多相关文章

  1. 万能前端框架uni app初探01:搭建开发环境
  2. android 系统调用大全
  3. Android(安卓)应用程序发布流程注意事项(整理)
  4. Android应用基础浅析
  5. Android(安卓)应用程序基础
  6. android 屏幕尺寸适配实现方案
  7. Android面试题(基础部分1)
  8. Android引导界面设计之ParallaxViewPager视差效果
  9. Android(安卓)退出应用程序问题

随机推荐

  1. PHP基于limit子句的分页详细操作
  2. 对于PHP-FPM参数的理解
  3. 关于php mysqli函数的总结与详细介绍(二)
  4. 两步快速实现PHP分页功能,方便实用
  5. 关于PHP Mysqli函数的一些整理以及详细介
  6. 使用PHP生成带有干扰线的验证码,干扰点、
  7. Swoole在PHP-fpm/apache中使用task功能
  8. php-fpm的reload过程
  9. 关于PHP安全编程的一些建议
  10. php实现特殊字符的替换操作