一、内容提要
上一章我们讲到了Android自动化测试之---Monkey的使用,这一章,我们来讲讲如何在Android自动化测试中,使用MonkeyRunner。
二、MonkeyRunner的原理:
1)MonkeyRunner工具是使用Jython写出来的。Jython是一种完整的语言,是Python语言在Java中的完全实现。
2)它是android-sdk-windows中自带的工具之一,提供了多个API,通过MonkeyRunner的API可以编写Python脚本程序来模拟控制Android手机设备上的app应用。
三、环境搭建
1)下载安装jdk:
JDK:Java Development Kit,Java 语言的软件开发工具包;
http://www.oracle.com/technetwork/java/javase/downloads/index.html
ii)如上图所示,点击Java Archive区域右边的DOWNLOADS,跳转到新的页面,点击你想要下载的版本即可:
以下载Java SE 8为例,点击后跳转到新的页面,如下图所示:
iii)点击Accept License Agreement,根据你的PC系统环境选择合适的版本,这里我们选择windows-x64版本下载,会跳转到一个登录界面,如下图所示;(注:下载历史版本,需要创建Oracle帐号,并登录。)
下载下来的文件:jdk-8u161-windows-x64.exe,根据提示一步一步的安装。
2)配制PC端的系统环境变量:
JAVA_HOME
C:\Program Files\Java\jdk1.8.0_161
CLASSPATH
.;%JAVA_HOME%\lib\dt.jar;%JAVA_HOME%\lib\tools.jar;
3)查看jdk安装状态:
在cmd中输入命令:java -version,出现以下信息,代表安装成功;
4)安装python:
点击Downloads--->All releases;
跳转到新的链接,如下图所示:
下载下来的文件:python-3.6.5-amd64.exe,根据提示一步一步安装即可。
2)并如下图所示,配制系统环境变量。
3)查看Python的安装状态
在cmd中输入命令:python --version或是直接输入python,如下图所示,表示安装成功。
四、运行MonkeyRunner
MonkeyRunner是android-sdk-windows\tools目录下自带的工具。
在前面的章节中,已经讲过了关于android-sdk-windows环境的相关配置,这里直接讲如何使用monkeyrunner。
在cmd中输入monkeyrunner,如下图所示,代表运行成功:
但是,我们一般不会直接在这里面编写代码,会借用Pycharm工具,用python语言来进行脚步的编写。下面,我们将来介绍MonkeyRunner API工具。
五、MonkeyRunner API
MonkeyRunner API工具主要有三大类:MonkeyRunner、MonkeyDevice、MonkeyImage;
注:在导入这三大模块时,需要重命名:
MonkeyRunner as mr,MonkeyDevice as md,MonkeyImage as mi
否则,会出现"#NameError: name 'xxx' is not defined"的情况。
1)MonkeyRunner:提供连接真机设备或模拟器进行测试,导入模块之后,代码如下所示:
连接设备:device = MonkeyRunner.waitForConnection(超时时间,设备名)
2)MonkeyDevice:提供安装和卸载程序包、启动应用Activity、发送按键和点击事件等方法;
a)设备连接成功以后,安装需要测试的apk,代码如下:
device.installPackage('apk路径')
例:device.installPackage('E:\\app soft\\V2.3.5-2018-09-11.apk')
卸载之前安装的app应用,代码如下:
device.removePackage('包名')
b)安装好了一个apk软件包后,我们可以用launchable-activity类来启动app应用,代码如下所示:
device.startActivity(component="包名/Activity名")
c)使用monkeyRunner执行操作,速度过快容易报错,这时需要让脚本慢下来,代码如下所示:
MonkeyRunner.sleep(3),表示让程序休眠3秒。
d)在测试过程中,如果需要将当前界面的图截下来,并保存到电脑的指定位置,代码如下所示:
result = device.takeSnapshot()
result.writeToFile('E:\\test\\mihome.png','png')
e)定位输入框,并输入你想要写的内容;
注:目前发现不支持中文字符串,支持数字或英文;
device.touch(342, 618, 'DOWN_AND_UP')
device.type('helloworld')
f)滑动屏幕:
格式如下:device.drag(x,y,d, s)
x代表第一个坐标,y代表第二个坐标,d代表拖动持续时长(默认值为1秒),s
代表插值点时要采取的步骤(默认值为10,可以不填写);
device.drag((603,366),(100,366), 1, 10)
y坐标相同,x:603比x:100大,代表从右到左,向左滑动;
g)屏幕黑屏的情况下,唤起屏幕:
device.wake()
h)按键(如home键或是back键)
device.press()
例如按下手机设备的home键,代码如下:
device.press("KEYCODE_HOME")
例如按下手机设备的back键,代码如下:
device.press("KEYCODE_BACK")
i)点击app应用
touch有三种状态:DOWN,UP, DOWN_AND_UP,代码如下所示:
device.touch(342, 618, 'DOWN_AND_UP')
领取专属 10元无门槛券
私享最新 技术干货