Android App 专项测试--压力测试篇(三)

第三部分(脚本)

MonkeyScript

  1. 执行monkey 脚本的命令:

      adb shell monkey  -f  < scriptfile > < event -count >

      (1)轨迹球事件

       DispatchTrackball 命令: DispatchTrackball(long downtime,long eventide,int action, float x,float y, float pressure, float size, int metastate, float xprecision, float yprecision, int device, int edgeflags)

    action  0 代表 按下, 1 代表 弹起, x 和 y 带表的坐标点

   (2)点击事件

    DispatchPointer(long downtime,long eventide,int action, float x,float y, float pressure, float size, int metastate, float xprecision, float yprecision, int device, int edgeflags)

     action 0 代表按下, 1 代表弹起, x 和 y 代表的坐标点

   (3)输入字符串的事件

    DispatchString (String text)

   (4)启动应用

    LauchActivity(package,Activity)

   (5)等待事件

    UserWait(millonseconds)

    (6) 按下键值

    DispatchPress(int keycode)   #keycode 66 回车键

   事例:在搜索框中输入查询词  重复2次

           adb shell monkey  -f  monkey.script  

#实现在搜索框 搜索关键词
#1. 启动app
#2. 点击输入框
#3. 输入查询词
#4. 点击键盘上的回车
#5. 点击搜索按钮
#6. 等待结果的出现

type = user
count = 10
speed = 1.0
start data >>

LaunchActivity(com.example.zhangjian.minibrowser2,
com.example.zhangjian.minibrowsers.MainActivity) UserWait(
2000) # 点击坐标(100,100) 0 代表按下 DispatchPointer(10,10,0,100,100,1,1,-1,1,1,0,0) # 点击坐标(100,100) 1 代表弹起 DispatchPointer(10,10,1,100,100,1,1,-1,1,1,0,0) #输入框 输入 test DispatchString(test) UserWait(1000) # 点击回车的keycode 值为66 DispatchPress(66) UserWait(1000) # 点击搜索按钮 DispatchPointer(10,10,0,400,100,1,1,-1,1,1,0,0) DispatchPointer(10,10,1,400,100,1,1,-1,1,1,0,0) # 等待6秒 UserWait(6000)

     注意:若app 不能被launch起来,检查 manifest.xml这句 : < activity android:name = ".MainActivity"   android:exported= "true" >   允许被外部调起

   

Monkey Runner

  1. MonkeyRunner API - alert

   void alert (string message,striing title, striing okTitle)

1 #!python
2 #_*_UTF-8_*_
3 from com.android.monkeyrunner import MonkeyRunner
4 MonkeyRunner.alert("Hello mook frends", "This is title","OK")
5 
6 # 执行方式
7 #monkeyrunner demo.py

  2. MonkeyRunner API - waitForConnection

   waitForConnection(float timeout, string deviceid)

  3. MonkeyDevice API - drag(拖动)

   drag(tuple start, tuple end, float duration, integer steps)

   start 起点位置

   end 终点位置

   duration 手势持续的时间

   steps 插值点的步数,默认 10 

  4. MonkeyDevice API - press(按键)

   press(string keycode,dictionary type)

   keycode 名,Down、UP、DOWN_AND_UP

  5. MonkeyDevice API - startActivity(启动应用)

   startActivity(package/ activity)  

  6. MokeyDevice API - touch(点击)

   touch(integer x,integer y, integer type)

   x 坐标值, y坐标值

    type: DOWN,UP,DOWN_AND_UP

  7. MonkeyDevice API- takeSnapshot(截屏)

   MonkeyDevice.takeSnapshot()

  8.MonkeyImage API - sameAs

   图像对比

   boolean sameAs (MonkeyImage other, float percent )

  9. MonkeyImage API - writeToFile(保存图像)

   void writeToFIle(string path, string format)

  实例:monkeyrunner  mook.py     

 1 #实例 搜索 建军90年阅兵
 2 #!python
 3 #_*_UTF-8_*_
 4 from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice,MonkeyImage
 5 #连接设备
 6 device = MonkeyRunner.waitForConnection(3,"192.168.26.101:5555")
 7 #启动app
 8 device.startActivity("com.example.zhangjian.minibrowser2/com.example.zhangjian.minibrowser2.MainActivity")
 9 MonkeyRunner.sleep(2)
10 #点击搜索框
11 device.touch(100,100,"DOWN_AND_UP")
12 MonkeyRunner.sleep(1)
13 #输入查询词
14 device.type("建军90年阅兵")
15 MonkeyRunner.sleep(1)
16 #点击回车键
17 device.press("KEYCODE_ENTER","DOWN_AND_UP")
18 MonkeyRunner.sleep(1)
19 #点击搜索框
20 device.touch(400,100,"DOWN_AND_UP")
21 MonkeyRunner.sleep(6)
22 #截屏
23 image = device.takeSnapshot()
24 image.writeToFile('./test.png','png')
25 #点击清除按钮
26 device.touch (300,100,"DOWN_AND_UP")
27 MonkeyRunner.sleep(3)
mook.py
原文地址:https://www.cnblogs.com/dongtian/p/7259884.html