常见bug

MonkeyRunner简介

2020-06-21  本文已影响0人  Cyzhouke

1、简介

MonkeyRunner工具使用Jpython(使用Java编程语言实现的Python)写出来的,MonkeyRunner提供了多个API,通过MonkeyRunner API可以编写一个Python程序来模拟操作控制Android设备App,测试其稳定性并通过截屏记录出现的问题。MonkeyRunner工具主要设计用于在功能/框架级测试应用程序和设备。MonkeyRunner在Android_sdk中的位置:tools目录下。

2、MonkeyRunner的功能

3、MonkeyRunner与Monkey的区别

4、MonkeyRunner环境搭建

安装好Android SDK后,配置MonkeyRunner环境变量(将MonkeyRunner的路径放入Path)。在cmd中输入MonkeyRunner出现如下显示内容说明安装成功,使用Ctrl+D退出。

环境.png

5、MonkeyRunner API介绍

官方文档:http://www.android-doc.com/tools/help/monkeyrunner_concepts.html#
MonkeyRunner主要分为三个类:

5.1、MonkeyRunner类

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

API 功能
alert() 警告框
choice() 选项列表框
help() API帮助文档
input() 输入
sleep() 暂停
waitFor Connection() 等待设备连接

常用方法:

from com.android.monkeyrunner import Monkeyrunner as mr

print("connect devices...")

device=mr.waitForConnection(5,'127.0.0.1:62001')

5.2、MonkeyDevice类

提供安装和卸载程序包、开启activity、发送按键和点击事件、运行测试包等

API 功能
broadcastIntent() 发送广播
drag() 拖动
getProperty() 获取当前设备属性
getSystemProperty() 获取当前设备属性
installPackage() 安装应用
instrument 执行测试用例
press() 按键
reboot() 重启
removePackage() 删除指定Package
startActivity() 启动应用
touch() 点击

常用方法:

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参数说明:

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

drag参数说明:

5.3、MonkeyImage类

用来保存各种格式的测试截图,并可以进行图像对比

API 功能
convertToBytes() 转换图像格式
getRawPixel() 获取当前坐标像素元组
getRawPixellnt() 获取当前坐标像素值
sameAs() 图像对比
writeToFile() 保存图像文件到指定的文件路径
getSubImage() 截取子图像
takeSnapshot() 屏幕截图

常用方法:

6、MonkeyRunner案例

6.1、测试场景

使用MonkeyRunner连接设备,进行自动安装并启动APP,完成登录功能,并截图保存到指定目录下

6.2、思路分析

步骤:
1、连接设备
2、安装App
3、启动App
4、点击用户名,密码输入框,完成输入
5、点击登录
6、截图

6.3、代码(考研帮)

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("-----succeed start-----")

print("-----install app-----")
device.installPackage(r"F:\kaoyan3.1.0.apk")
print("-----succeed install-----")

print("-----start App-----")
package="com.tal.kaoyan"
activity="com.tal.kaoyan.ui.activity.SplashActivity"
runComponent=package+"/"+activity
device.startActivity(component=runComponent)

mr.sleep(3) #等待

#点击取消更新按键
print("-----click cancel update-----")
device.touch(726.2,1096.4,"DOWN_AND_UP")       #对取消更新按钮执行点击弹起操作
mr.sleep(3)

#点击跳过
print("---click skip button---")
device.touch(982,69,"DOWN_AND_UP")             #对跳过按钮执行点击弹起操作
mr.sleep(3)

#输入账号
print("input username and password")
device.touch(194,381,"DOWN_AND_UP")            #对用户名输入框执行点击弹起操作
mr.sleep(1)
device.type("zxw1234")                         #输入登录账号
device.touch(194,472,"DOWN_AND_UP")            #对密码输入框执行点击弹起操作
mr.sleep(1)
device.type("zxw123456")

#点击登录
device.touch(550,628,"DOWN_AND_UP")
mr.sleep(3)

print("-----screen shot-----")
screenshot=device.takeSnapshot()                #截屏
screenshot.writeToFile(r"C:\Users\k.zhou\Pictures\Saved Pictures\kyb.png","png")    #保存图片
上一篇 下一篇

猜你喜欢

热点阅读