MonkeyRunner_2_MonkeyRunner的API

MonkeyRunner API

MonkeyRunner工具主要有三个类:

  1. MonkeyRunner
  2. MonkeyDevice
  3. MonkeyImage

官方API文档 :http://www.android-doc.com/tools/help/monkeyrunner_concepts.html#

1.MonkeyRunner类:

MonkeyRunner提供连接真机和模拟器、输入、暂停、警告框等方法。

常用方法

from com.android.monkeyrunner import MonkeyRunner as mr
print("connect devices...")
device=mr.waitForConnection()    #等待连接设备
# device=mr.waitForConnection(5,'127.0.0.1:62001')

2.MonkeyDevice类

MonkeyDevice类提供了安装和卸载程序包、开启Activity、发送按键和点击事件、运行测试包等方法。

常用方法 

  • installPackage (string path)                   #安装应用
    removePackage (string package)                 #删除应用
    startActivity (string uri, string action, string data, string mimetype, iterable
                 categories dictionary extras, component component,flags)    #启动应用
    touch (integer x, integer y, integer type)      #点击

     

touch参数说明

     touch (integer x, integer y, integer type)      #点击

integer x:x坐标值。
integer y:y坐标值。
integer type:key event类型(如DOWN、UP、DOWN_AND_UP)。

DOWN为按下事件 UP为弹起事件 DOWN_AND_UP为按下弹起事件。

  •  

drag参数详细说明如下:

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

tuple start:拖拽起始位置,为tuple类型的(x,y)坐标点。
tuple end:拖拽终点位置,为tuple类型的(x,y)坐标点。
float duration:拖拽手势持续时间,默认为1.0s。
integer steps:插值点的步数,默认值为10。

实践案例:

连接设备,安装考研帮App并启动

代码实现

    py文件名:kyb_start.py

from com.android.monkeyrunner import MonkeyRunner as mr  #导入类
from com.android.monkeyrunner import MonkeyDevice as md  #导入类

print("connect devices...")             #打印连接设备
device=mr.waitForConnection()           #连接设备

print("install app...")                                            #打印安装app
device.installPackage(r'C:\Users\Shuqing\Desktop\kaoyan3.1.0.apk') #安装app
 
package = 'com.tal.kaoyan'                                #app 包名
activity = 'com.tal.kaoyan.ui.activity.SplashActivity'    #app launch-activity名
runComponent = package + '/' + activity                   #进行拼接

print("launch App...")                        #打印启动app
device.startActivity(component=runComponent)  #启动app

代码执行方式

monkeyrunner scripfile

eg:

monkeyrunner E:\monkeyrunner_script\kyb.py

3.MonkeyImage类

MonkeyImage类在测试过程中用来保存各种格式的测试截图,并可以进行图像对比。

 

常用方法

  • takeSnapshot() 进行屏幕截图
  • writeToFile() 保存图像文件到指定的文件路径

 

用法示例

from com.android.monkeyrunner import MonkeyImage as mi  

print("takeSnapshot")

screenshot=device.takeSnapshot()  

screenshot.writeToFile(r'E:\monkeyrunner_script\test.png','png')  

综合实践

测试场景

  • 连接设备,自动安装并启动考研帮app
  • 启动后登录账号(账号zxw1234 密码:zxw123456),然后截图并保存到指定文件位置。

思路分析

  • 连接设备
  • 安装app
  • 启动app
  • 输入用户名密码点击登录按钮
  • 截图
  •  

脚本实现

from com.android.monkeyrunner import MonkeyRunner as mr
from com.android.monkeyrunner import MonkeyDevice as md
from com.android.monkeyrunner import MonkeyImage as mi
print("connect devices...")
device=mr.waitForConnection()     #连接设备
print(" install app")
device.installPackage(r'C:\Users\Shuqing\Desktop\kaoyan3.1.0.apk')   #安装app包
print("launch app...")
package='com.tal.kaoyan'                                #包名
activity='com.tal.kaoyan.ui.activity.SplashActivity'   #activity名
runComponent=package+'/'+activity 
device.startActivity(component=runComponent)          #启动app包
mr.sleep(3)
print("touch cancel button") 
device.touch(618,895,'DOWN_AND_UP')                  #点击升级
mr.sleep(1)
print("touch skip button")
device.touch(804,67,'DOWN_AND_UP')                      #点击跳过
mr.sleep(1)
print("input username and password")   
device.touch(57,373,'DOWN_AND_UP')     #点击name输入框
mr.sleep(2)
device.type('name')            #输入name
device.touch(152,480,'DOWN_AND_UP')   #点击密码输入框
mr.sleep(2)
device.type('password')    #输入密码 
mr.sleep(2)
print("touch login button")
device.touch(331,634,'DOWN_AND_UP')    #点击登陆
print("takeSnapshot")
screenshot=device.takeSnapshot()        #开始截图
screenshot.writeToFile(r'D:\monkeyrunner\kyb.png','png')  #保存截图

 

注意事项

方法调用错误

AttributeError: type object 'com.android.monkeyrunner.XXXXX' has no attribute XXXXXX

检查调用的方法名是否写错,特别是注意区分大小写。

字符编码错误

SyntaxError: Non-ASCII character in file 'E:\monkeyrunner_script\kyb.py', but no encoding declared;

需要在代码顶部补充 # -- coding: utf-8 -- 或者去掉代码中的中文字符

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值