使用monkeyrunner工具,编写一个简单的python脚本,对一个APP进行自动化测试
monkeyrunner自动化测试,主要通过运行结果截屏与期望结果截屏相比较。
Monkeyrunner API主要包括三个模块
1、MonkeyRunner:这个类提供了用于连接monkeyrunner和设备或模拟器的方法,它还提供了用于创建用户界面显示提供了方法。
2、MonkeyDevice:代表一个设备或模拟器。这个类为安装和卸载包、开启Activity、发送按键和触摸事件、运行测试包等提供了方法。
3、MonkeyImage:这个类提供了捕捉屏幕的方法。这个类为截图、将位图转换成各种格式、对比两个MonkeyImage对象、将image保存到文件等提供了方法。
1.手机启动开发者模式,并用数据线连接到电脑上,使用:adb devices 命令可查看是否连接成功
2.新建一个文件夹F:\test1,存放需要测试的APP安装包与脚本
3.确定sdk\tools\bin目录下存在monkeyrunner.bat文件
4.编写脚本
# coding=UTF-8
#导入这个程序使用的monkeyrunner模块
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice, MonkeyImage
#连接到当前设备,返回一个Device对象
device = MonkeyRunner.waitForConnection()
#安装APP包
#看看安装是否成功
device.installPackage('F:/test1/biugo.apk')
#启动APP(包名/activity名)
device.startActivity(component='com.yy.biu/.biz.main.MainActivity')
#按下菜单按钮
device.press('KEYCODE_MENU','DOWN_AND_UP')
#截屏
result = device.takeSnapshot()
#将屏幕截图写入文件
result.writeToFile('F:/test1/shot1.png','png')
5.打开cmd,并切换到sdk\tools\bin目录下:cd /d C:\Users\Administrator\AppData\Local\Android\Sdk\tools\bin
6.运行脚本:monkeyrunner F:\test1\monkeyDemo1.py
7.查看截图
其他操作的一些代码:
1.卸载APP:
device.removePackage('com.yy.biu')
2.暂停目前正在运行的程序指定的秒数:
MonkeyRunner.sleep(5)
3.字符串发送到键盘:
device.type('love')
4.锁屏后,屏幕关闭,可以用下命令唤醒:
device.wake()
5.重启手机:
device.reboot()
6.模拟滑动(参数:开始坐标;结束坐标;持续时间/秒,默认1秒;插值点时要采取的步骤,默认值是10):
device.drag((100,1053),(520,1053),1.5,10)
7.在指定位置发送触摸事件
device.touch(520,520,'DOWN_AND_UP')
8.发送指定类型指定键码的事件
#按下HOME键
device.press('KEYCODE_HOME',MonkeyDevice.DOWN_AND_UP)
#按下BACK键
device.press('KEYCODE_BACK',MonkeyDevice.DOWN_AND_UP)
#按下下导航键
device.press('KEYCODE_DPAD_DOWN',MonkeyDevice.DOWN_AND_UP)
#按下上导航键
device.press('KEYCODE_DPAD_UP',MonkeyDevice.DOWN_AND_UP)
#按下OK键
device.press('KEYCODE_DPAD_CENTER',MonkeyDevice.DOWN_AND_UP)
KeyCode:
home键 KEYCODE_HOME
back键 KEYCODE_BACK
send键 KEYCODE_CALL
end键 KEYCODE_ENDCALL
上导航键 KEYCODE_DPAD_UP
下导航键 KEYCODE_DPAD_DOWN
左导航 KEYCODE_DPAD_LEFT
右导航键 KEYCODE_DPAD_RIGHT
ok键 KEYCODE_DPAD_CENTER
上音量键 KEYCODE_VOLUME_UP
下音量键 KEYCODE_VOLUME_DOWN
power键 KEYCODE_POWER
camera键 KEYCODE_CAMERA
menu键 KEYCODE_MENU
第二个例子:
# coding=UTF-8
#实现模拟随机3次点击
from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice,MonkeyImage
import random # 随机数模块
#import time # 时间模块
#import sys # 系统模块
device = MonkeyRunner.waitForConnection() # 连接当前设备
if device is None:
print("Please connect a device to start!")
else:
print("start test")
n = 3
num = 0 # 计数器
while (num < n):
# x,y 为屏幕坐标 范围为设备分辨率
try:
x = random.randint(0,720) # 参数: 手机分辨率高,从0~720随机取一个值作为x
y = random.randint(0,1280) #参数: 手机分辨率宽,从0~1280随机取一个值作为y
except IndexError:
print ("parameter error") # cmd中文提示乱码 先简单做个英文提示
device.touch(x,y,“DOWN_AND_UP”) # 设备点击事件
print(num)
print(x)
print(y)
MonkeyRunner.sleep(5)
num += 1