Android自动化测试:MonkeyRunner基础

一、内容提要

上一章我们讲到了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')

  • 发表于:
  • 原文链接https://kuaibao.qq.com/s/20180917G132CG00?refer=cp_1026
  • 腾讯「云+社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 yunjia_community@tencent.com 删除。

同媒体快讯

扫码关注云+社区

领取腾讯云代金券