1. MonkeyRunner介绍:

Android的SDK中集成了三个可用来进行自动化测试的工具:Monkey、MonkeyRunner和Robotium。这三个测试工具都是基于黑盒测试。

MonkeyRunner工具提供了一个API,使用此API写出的程序可以在Android代码之外控制Android设备和模拟器。通过monkeyrunner,可以写出一个Python程序去安装一个Android应用程序或测试包,运行它,向它发送模拟击键,截取它的用户界面图片,并将截图存储于工作站上。monkeyrunner工具的主要设计目的是用于测试功能/框架水平上的应用程序和设备,或用于运行单元测试套件。

Monkeyrunner工具是使用Jython(使用Java编程语言的一种Python实现)写出来的。Jython允许MonkeyrunnerAPI与Android框架轻松的进行交互。

Python是一门强大的面向对象的编程语言,可以跨平台运行。

2. MonkeyRunner环境搭建

  • 安装JDK,配置环境变量

在Mac中已经为我们预装了JDK,因此JDK对我们来说直接使用即可,查看Mac中的JDK版本方法是在命令行中输入"java -version”并回车即可。

vim .bash_profile

export JAVA_HOME=/Library/Java/JavaVirtualMachines/jdk1.8.0_131.jdk/Contents/Home

export PATH=$JAVA_HOME/bin:$PATH

  • 下载Android SDK,并配置环境变量

vim .bash_profile

export PATH=${PATH}:/Users/zhangyuyin/Android/android-sdk-macosx/platform-tools  【monkey】

export PATH=${PATH}:/Users/zhangyuyin/Android/android-sdk-macosx/tools  【monkeyrunner】

export PATH=${PATH}:/Users/zhangyuyin/Android/android-sdk-macosx/build-tools/20.0.0 【aapt】

  • Python

Mac OX 上 自带 Python 2.7

你不必安装和配置即可直接使用Python进行开发

3. MonkeyRunner的详细介绍

MonkeyRunner工具主要有三个类:MonkeyRunner、MonkeyDevice、MonkeyImage

  • MonkeyRunnner类:

这个类主要用于把MonkeyRunner连接至真机或者模拟器waitForConnection

  • MonkeyImage类:

这个类主要是测试过程中,用来保存测试截图,把图片保存成各种格式,并且可以比较两个MonkeyImage对象。

主要常用的有两个方法:writeToFile (string path, string format) ,这个是保存截图的位置和命名,可以把图片保存到sdcard里面,也可以保存到电脑里面;sameAs (MonkeyImage other, float percent) 这个用来比较两个截图是否相同,结果为boolean值。

  • MonkeyDevice类:

这个类的方法就多了,主要提供了安装和卸载程序包、启动一个活动及操作键盘等事件的方法。startActivity (string uri, string action, string data, string mimetype, iterable categories dictionary extras, component component, flags) 启动一个应用,press (string name, dictionary type)点击控件 ,touch (integer x, integer y, integer type)点击控件(通过坐标定位),drag (tuple start, tuple end, float duration, integer steps) 拖拉控件等等方法。

4. 官网文档

MonkeyRunner:https://developer.android.com/studio/test/monkeyrunner/MonkeyRunner.html

MonkeyImage:https://developer.android.com/studio/test/monkeyrunner/MonkeyImage.html

MonkeyDevice:https://developer.android.com/studio/test/monkeyrunner/MonkeyDevice.html

5. monkeyrunner运行方式

monkeyrunner -plugin <程序文件名> <程序选项>

  • -plugin:(可选)内含monkeyrunner插件的.jar文件
  • <程序文件名> :如果指定此参数,monkeyrunner将视文件内容为Python程序并予以执行。如果此参数未予指定,则开启一个交互式会话。例如:monkeyrunner  test.py
  • <程序选项>:(可选)所指定的程序所需的参数或标志

6. 单步命令和操作( 查看包名和启动activity:aapt、logcat或其他工具)

  • 准备好手机或模拟器,运行monkeyrunner
  • 导入需要使用的模块from...import...
  • 连接设备waitForConnection
  • 安装待测应用apk到设备installPackage
  • 卸载待测应用removePackage
  • 启动待测应用startActivity
  • 暂停目前正在运行的程序指定的秒数sleep
  • 点击屏幕上的位置touch
  • 将字符串发送到键盘type
  • 发送指定类型指定键码的事件press
  • 模拟模拟滑动drag
  • 重启手机reboot
  • 手机截图takeSnapshot
  • 保存截图writeToFile
  • 唤醒设备屏幕wake

7. 执行python脚本

8. 录制和回放

  • 录制:monkeyrunner  monkey_recorder.py
  • 回放:monkeyrunner monkey_playback.py 文件名

9. monkeyrunner和monkey的区别

  • Monkey在命令行shell中运行,monkeyrunner在python环境下运行
  • Monkey是性能中的稳定性测试工具,monkeyrunner属于功能性测试工具
  • Monkey不支持扩展,monkeyrunner官方提供了python的API进行扩展


MonkeyRunner——Mac的更多相关文章

  1. MonkeyRunner Mac环境 录制脚本和回放 批量回放

    1.MonkeyRunner是AndroidSDK自带的一个东西,在SDK目录中的tools\bin文件夹中 2.配置环境变量 编辑环境变量:打开终端输入:open ~/.bash_profile 将 ...

  2. MAC中在eclipse luna上搭建移动平台自己主动化測试框架(UIAutomator/Appium/Robotium/MonkeyRunner)关键点记录

    这几天由于原来在用的hp laptop的电池坏掉了,机器一不小心就断电.所以仅仅能花时间在自己的mackbook pro上又一次搭建整套环境.大家都知道搭建好开发环境是个非常琐碎须要耐心的事情,特别是 ...

  3. MAC中在eclipse luna上搭建移动平台自动化测试框架(UIAutomator/Appium/Robotium/MonkeyRunner)关键点记录

    这几天因为原来在用的hp laptop的电池坏掉了,机器一不小心就断电,所以只能花时间在自己的macbook pro上重新搭建整套环境,大家都知道搭建环境是个很琐碎需要耐心的事情,特别是当你搭建的安卓 ...

  4. 老李推荐:第2章2节《MonkeyRunner源码剖析》了解你的测试对象: NotePad窗口Activity之NotesList简介

    老李推荐:第2章2节<MonkeyRunner源码剖析>了解你的测试对象: NotePad窗口Activity之NotesList简介   NotePad窗口Activity之NotesL ...

  5. MonkeyRunner进坑——errors importing other modules

    后知后觉,刚知道Android提供了MonkeyRunner这么个东西,能用来干嘛呢,官方文档介绍得很清楚.简单说,可以用Python程序通过API, installs an Android appl ...

  6. 总结:Mac前端开发环境的搭建(配置)

    新年新气象,在2016年的第一天,我入手了人生中第一台自己的电脑(大一时好友赠送的电脑在一次无意中烧坏了主板,此后便不断借用别人的或者网站的).macbook air,身上已无分文...接下来半年的房 ...

  7. JAVA for mac 的学习之路

    要学习一门新技术,首先得下载相关的工具. 一 . 下载相关工具 1. 下载 jdk formac 下载地址为:http://www.oracle.com/technetwork/java/javase ...

  8. docker for mac 学习记录

    docker基本命令 docker run -d -p 80:80 --name webserver nginx 运行容器并起别名 docker ps 展示目前启动的容器 docker ps -a 展 ...

  9. Xamarin+Prism开发详解四:简单Mac OS 虚拟机安装方法与Visual Studio for Mac 初体验

    Mac OS 虚拟机安装方法 最近把自己的电脑升级了一下SSD固态硬盘,总算是有容量安装Mac 虚拟机了!经过心碎的安装探索,尝试了国内外的各种安装方法,最后在youtube上找到了一个好方法. 简单 ...

随机推荐

  1. 从0开始学爬虫8使用requests/pymysql和beautifulsoup4爬取维基百科词条链接并存入数据库

    从0开始学爬虫8使用requests和beautifulsoup4爬取维基百科词条链接并存入数据库 Python使用requests和beautifulsoup4爬取维基百科词条链接并存入数据库 参考 ...

  2. 数据分析入门——pandas之DataFrame基本概念

    一.介绍 数据帧(DataFrame)是二维数据结构,即数据以行和列的表格方式排列. 可以看作是Series的二维拓展,但是df有行列索引:index.column 推荐参考:https://www. ...

  3. 使用Scanner

    在上个步骤中,每次要发不同的数据都需要修改代码 可以使用Scanner读取控制台的输入,并发送到服务端,这样每次都可以发送不同的数据了.   1 2 3 4 5 6 7 8 9 10 11 12 13 ...

  4. spring 使用@AspectJ注解开发Spring AOP

    选择切点 Spring是方法级别的AOP框架,而我们主要也是以某个类的某个方法作为切点,用动态代理的理论来说,就是要拦截哪个方法织入对应AOP通知. 代码清单:打印角色接口 package com.s ...

  5. AI佳作解读系列(五) - 目标检测二十年技术综述

    计算机视觉中的目标检测,因其在真实世界的大量应用需求,比如自动驾驶.视频监控.机器人视觉等,而被研究学者广泛关注.   上周四,arXiv新出一篇目标检测文献<Object Detection ...

  6. jqweui Popup 使用说明

    使用步骤说明: 今天遇到一个问题,无论怎么点击一个图标都不会弹出对应的遮罩层,但是把示列代码拷贝过来又可以正常显示:结果是由于在复制的时候把 # 号弄掉了 错误操作展示: <a href=&qu ...

  7. Angular cookies

    参考地址:https://stackoverflow.com/questions/34298133/angular-cookies/36093800#36093800 @Component({ sel ...

  8. python:动态参数*args

    动态参数 顾名思义,动态参数就是传入的参数的个数是动态的,可以是1个.2个到任意个,还可以是0个.在不需要的时候,你完全可以忽略动态函数,不用给它传递任何值. Python的动态参数有两种,分别是*a ...

  9. 【C# 开发技巧】 c#窗体关于调试界面和运行界面不一样的原因之一

    如下图所示: 原因是因为主窗体属性AutoScaleMode设置为:Font了: 按自己需求将AutoScaleMode设置修改即可. 另外一个可能是系统显示-缩放与布局-要调整到100% 如下图:

  10. idea创建自定义代码块

    1.File——>settings 2.找到Editor——>live Templates,点击加号+ 3.创建group或直接创建,我这里创建了一个user组,然后在user组里面添加l ...