Monkeyrunner概述

Monkeyrunner是由Google开发、用于android系统的自动化测试工具,由android系统自带,存在于android sdk中(sdk:software development kit,软件开发工具包)
Monkeyrunner提供了一个API,用此API写出的程序可以在Android代码之外控制Android设备和模拟器。(API: Application Programming Interface 应用 程序接口)
Monkeyrunnerd主要设计目的:用于测试功能/框架水平上的应用程序和设备,或运行单元测试套件。
Monkeyrunner通过运行python脚本,来执行脚本中预先定义好的一系列操作事件,如:安装卸载某个应用、进入任一模块、点坐标、按键、编辑文本、截图对比等
 

Monkeyrunner API类别

MonkeyRunner为MonkeyRunner程序提供工具方法的类。

这个类提供了用于连接MonkeyRunner至设备或模拟器的方法。

它还提供了用于创建一个MonkeyRunner程序的用户界面以及显示内置帮助的方法。

MonkeyDevice表示一个设备或模拟器。

这个类提供了安装和卸载程序包、启动一个活动以及发送键盘或触摸事件到应用程序      的方法。您也可以用这个类来运行测试包。

MonkeyImage 表示一个截图对象。

这个类提供了截图、将位图转换成各种格式、比较两个MonkeyImage对象以及写图像到文件的方法。

Monkeyrunner特性

多设备控制:monkeyrunner API可以跨多个设备或模拟器实施测试套件。您可以在同一时间接上所有的设备或一次启动全部模拟器(或统统一起),依据程序依次连接到每一个,然后运行一个或多个测试。您也可以用程序启动一个配置好的模拟器,运行一个或多个测试,然后关闭模拟器。
功能测试: monkeyrunner可以为一个应用自动贯彻一次功能测试。您提供按键或触摸事件的输入数值,然后观察输出结果的截屏。
回归测试:monkeyrunner可以运行某个应用,并将其结果截屏与既定已知正确的结果截屏相比较,以此测试应用的稳定性。
可扩展的自动化:由于monkeyrunner是一个API工具包,您可以基于Python模块和程序开发一整套系统,以此来控制Android设备。除了使用monkeyrunner API之外,您还可以使用标准的Python os和subprocess模块来调用Android Debug Bridge这样的Android工具
 
 
Monkeyrunner使用
1.环境配置
安装JDK:android--sdk需要在java环境及jdk下运行
解压android--sdk: 包含tools及platform-tools两文件夹,monkeyrunner存在于tools文件夹下, adb存在于platform-tools文件夹下
添加环境变量: 将tools及platform-tools的路径添加至环境变量中 
验证环境配置:cmd下分别输入java –version、monkeyrunner ,若返回版本号,则表明环境配置成功
2.MR运行

方法一:命令行输入,适用单行调试

打开cmd窗口
输入:monkeyrunner  ----启用monkeyrunner
输入:from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice,MonkeyImage               ----导入monkeyrunner API
输入:device = MonkeyRunner.waitForConnection() ----连接设备
输入:device.type(‘10010’)                  ----指定操作,输入10010
 

方法 二:将操作写入python脚本,直接运行该脚本

打开cmd窗口

输入:monkeyrunner –v  INFO + 脚本路径
 
 
3.脚本编写
 

常用语句

device.wake( )

点亮屏幕

device.type('10086')

输入10086

MonkeyRunner.sleep(3)

等待3s

device.drag((236,440),(236,300),2,10)

滑屏:起点坐标(236,440),终点坐标(236,300)

device.drag((236,440),(236,440),2,10)

长按

device.touch(170,524,'DOWN_AND_UP')

点击屏幕某处,

坐标值为(170,254)

device.press('KEYCODE_VOLUME_UP','DOWN_AND_UP')

增大音量

device.press('KEYCODE_VOLUME_DOWN','DOWN_AND_UP')

减少音量

常用语句

device.press('KEYCODE_HOME','DOWN_AND_UP')

返回主界面

device.press('KEYCODE_BACK','DOWN_AND_UP')

返回上一级菜单

device.press('KEYCODE_MENU','DOWN_AND_UP')

进入菜单页

device.press('KEYCODE_CALL','DOWN_AND_UP')

进入拨号页或点按拨号键

device.press('KEYCODE_DPAD_UP','DOWN_AND_UP')

向上移动光标

device.press('KEYCODE_DPAD_DOWN','DOWN_AND_UP')

向下移动光标

device.press('KEYCODE_DPAD_LEFT','DOWN_AND_UP')

向左移动光标

device.press('KEYCODE_DPAD_RIGHT','DOWN_AND_UP')

向右移动光标

安装Python或Ulipad:用于查看、编写monkeyrunner脚本,Ulipad更直观、方便

运行recorder.py,利用monkeyrunner的录制功能编写脚本

Monkeyrunner介绍的更多相关文章

  1. Android自动化测试 - MonkeyRunner(一)介绍

    MonkeyRunner介绍: MonkeyRunner是Google提供的一个基于坐标点的Android黑盒自动化测试工具. Monkeyrunner工具提供了一套API让用户/测试人员来调用,调用 ...

  2. MonkeyRunner测试工具小结

    一.MonkeyRunner介绍: MonkeyRunner是Google提供的一个基于坐标点的Android黑盒自动化测试工具.Monkeyrunner工具提供了一套API让用户/测试人员来调用,调 ...

  3. Android初体验之Monkey和MonkeyRunner

    原文地址https://blog.csdn.net/mad1989/article/details/38087737 Monkey 什么是Monkey Monkey是Android中的一个命令行工具, ...

  4. Monkey、Monkeyrunner之间的区别

    Monkey.Monkeyrunner之间的区别 一.Monkey Monkey是Android中的一个命令行工具,可以运行在模拟器里或实际设备中.它向系统发送伪随机的用户事件流(如按键输入.触摸屏输 ...

  5. MonkeyRunner——Mac

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

  6. Android的Monkey和MonkeyRunner

    本文部分解释性语段摘自网络百科或其它BLOG,语句内容网络随处可见,也不知道谁是初始原创,便不再署名出处,如有雷同,还请见谅. Monkey 什么是Monkey Monkey是Android中的一个命 ...

  7. MonkeyRunner+Python自动化测试一

    MonkeyRunner介绍 1.monkeyrunner 工具提供了一个 API,用于编写可从 Android 代码外部控制 Android 设备或模拟器的程序.使用 monkeyrunner,您可 ...

  8. 常见Android测试工具简介

    在进行android设备测试过程中,在进行系统测试时候,往往需要关注到很多方面,导致一个崩溃或者运行一段时间自动重启或者停止的问题很多.最简单来看,影响因素就有:底层硬件设备.OS层.上层app层.另 ...

  9. App测试工具大全,收藏这篇就够了

    随着移动互联网的高速发展,App 应用非常火,测试工程师也会接触到各种 app 应用.除了人工测试之外,也可以通过一些测试工具来提高我们的测试效率,以下对于我用过或听过的 app 测试工具做了一个统一 ...

随机推荐

  1. js获取form的方法

    先来看下面代码: ? <html> <head> <scirpy> window.onload=function(){    var f1=document.f1; ...

  2. Com组件介绍

    COM组件简介 面向对象的思想难以适应这种分布式软件模型,于是组件化程序设计思想得到了迅速的发展. 按照组件化的程序设计的思想,复杂的应用程序被设计成一些小的,功能单一的组件模块,这些组件模块可以运行 ...

  3. Autolayout UIScrollView

    http://www.cocoachina.com/ios/20141011/9871.html Xcode6中如何对scrollview进行自动布局(autolayout)   Xcode6中极大的 ...

  4. JavaScript-Tool:jquery.tree.js-un

    ylbtech-JavaScript-Tool:jquery.tree.js 1.返回顶部   2.返回顶部   3.返回顶部   4.返回顶部   5.返回顶部 0. https://www.jst ...

  5. saltstack自动化运维快速入门

    saltstack自动化运维快速入门 关于saltstack 这个软件是干啥的 我这里就不介绍了 只是简单的说下是干啥的 网上的说法是 它是func的强化版本+ puppet的精简版 关于puppet ...

  6. Ruby module ---模块,组件

    module 的主要目的是把不同的方法和常量分别放进不同的命名空间. module 的命名方式跟类一样首字母大写,多个单词不用下划线. 如:CircleArea module 语法 module Mo ...

  7. 3.9-3.10 分布式协作服务框架Zookeeper

    一.zookeeper概述 一个开源的分布式的,为分布式应用提供协调服务的Apache项目. 提供一个简单的原语集合,以便于分布式应用可以在它之上构建更高层次的同步服务. 设计非常易于编程,它使用的是 ...

  8. k8s-调度器、预选策略及优选函数-二十

    一.简介 master上运行着三个最核心的组件,apiserver.scheduler.controller manager.此外,master还依赖于ectd存储节点,最好ectd是有冗余能力的集群 ...

  9. node+pjax实现不刷新跳转

    做前端的都知道如果通过a标签去访问跳转到某一个页面,浏览器会自动刷新.那么如何实现不刷新跳转? html5的出现让我们可以实现不刷新跳转页面.主要使用的方法:history.pushState(dat ...

  10. bzoj 2120: 数颜色【带修改莫队】

    比较裸的带修莫队,对每个修改操作记一下它修改的位置修改前的颜色 然后正常莫队,每次对修改操作时间倒流一下即可 #include<iostream> #include<cstdio&g ...