monkeyrunner学习笔记(1)- monkeyrunner入门

monkeyrunner简介

  • monkeyrunner工具提供了一个API,使用此API写出的程序可以在Android代码之外控制Android设备和模拟器。
  • 主要设计目的是用于测试功能/框架水平上的应用程序和设备,或用于运行单元测试套件
  • 在工作站上通过API定义的特定命令和事件控制设备或模拟器。
  • 与monkey工具无关monkeyrunner工具使用Jython,你可以通过Python语法访问API中的常量、类和方法monkeyrunner工具使用Jython,你可以通过Python语法访问API中的常量、类和方法
    • monkey直接运行于设备或模拟器的adb shell,生成用户或系统事件的伪随机流
    • monkeyrunner则从workstation通过api发送特定命令和事件来控制设备或模拟器
  • monkeyrunner工具使用Jython,你可以通过Python语法访问API中的常量、类和方法

monkeyrunner测试类型

  1. 多设备控制:monkeyrunner API可以将一个或多个测试套件(test suites)应用于多台设备。功能测试: monkeyrunner可以为一个应用自执行从头到尾的自动化测试。功能测试: monkeyrunner可以为一个应用自执行从头到尾的自动化测试。

    • 设备可以是通过物理连接在一起,也可以是同时启动所有的模拟器,或者是两者的混合
    • 通过程序控制依次进行连接,然后运行一个或多个测试
  2. 功能测试: monkeyrunner可以为一个应用自执行从头到尾的自动化测试。
  3. 回归测试:monkeyrunner可以运行某个应用,并将其结果截屏与既定已知正确的结果截屏相比较,以此测试应用的稳定性。
  4. 可扩展的自动化:monkeyrunner 是一个api工具包,你自己可以开发一套基于python模块和程序的系统,来控制Android设备。
    • 可以使用标准的Python os和subprocess模块来调用Android Debug Bridge这样的Android工具。
    • 可以为monkeyrunner API添加自己的类

一个简单的monkeyrunner程序

from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice, MonkeyImage

#returning a MonkeyDevice object
device = MonkeyRunner.waitForConnection() 

#returns a boolean
device.installPackage(r‘C:\Users\Administrator\Desktop\mrtest\demo.apk‘)

#Runs the component
device.startActivity(component=‘com.example.android.apis/.ApiDemos‘)
#sleep 3 seconds
MonkeyRunner.sleep(3)
device.press(‘KEYCODE_HOME‘, MonkeyDevice.DOWN_AND_UP)

result = device.takeSnapshot()
result.writeToFile(r‘C:\Users\Administrator\Desktop\mrtest\shot1.png‘, ‘png‘)

MonkeyRunner.alert("Test Completed!", "alert", "ok") 

monkeyrunner运行

两种运行方式:
1. 提供一个py文件作为运行参数,则monkeyrunner将视文件内容为Python程序运行 
2. 不加py文件参数,则monkeyrunner会启动一个交互会话(interactive session)
两种方法都需要调用SDK目录tools子目录下的monkeyrunner

monkeyrunner -plugin <plugin_jar> <program_filename> <program_options>
参数 说明
-plugin <plugin_jar> (可选) 声明一个包含monkeyrunner插件的jar文件。如果需要包含多个文件,可以通过反复使用该参数实现。
<program_filename> 如果提供了这个参数,monkeyrunner命令会将这个文件中的内容作为一个Python程序来运行。如果未提供该参数,monkeyrunner命令会启动一个交互回话(interactive session)
<program_options> (可选)<program_file>指明的程序所需的标记和参数
时间: 2024-11-06 03:36:07

monkeyrunner学习笔记(1)- monkeyrunner入门的相关文章

现代C++学习笔记之二入门篇2,数据转换

static_cast:    这种强制转换只会在编译时检查. 如果编译器检测到您尝试强制转换完全不兼容的类型,则static_cast会返回错误. 您还可以使用它在基类指针和派生类指针之间强制转换,但是,编译器在无法分辨此类转换在运行时是否是安全的. dynamic_cast: dynamic_cast在运行时检查基类指针和派生类指针之间的强制转换. dynamic_cast 是比 static_cast 更安全的强制类型转换,但运行时检查会带来一些开销. const_cast:    con

MySQL学习笔记之一 MySQL入门

本人之前接触的关系型数据库主要是oracle和sqlserver,而对于mysql知之甚少,但查阅网上资料发现,mysql与oracle非常相似,所以学起来应该不会很费劲,在总结的时候可能更多的把关注点放在它与oracle的不同之处. 一.简介 MySQL是一个真正的多用户.多线程SQL数据库服务器.SQL(结构化查询语言)是世界上最流行的和标准化的数据库语言.MySQL是一个客户端/服务器结构的实现, 它由一个服务器守护程序mysqld和很多不同的客户程序和库组成. MySQL的普及并不局限于

现代C++学习笔记之二入门篇1

现代 C++ 强调: 基于堆栈的范围,而非堆或静态全局范围. 自动类型推理,而非显式类型名称. 智能指针而不是原始指针. std::string 和 std::wstring 类型(请参见 <string>),而非原始 char[] 数组. 标准模板库 (STL) 容器(例如 vector.list 和 map),而非原始数组或自定义容器. 请参见 <vector>.<list> 和 <map>. STL 算法,而非手动编码的算法. 异常,可报告和处理错误条

Android自动化测试之Monkeyrunner学习笔记(一)【转】

因项目需要,开始研究Android自动化测试方法,对其中的一些工具.方法和框架做了一些简单的整理,其中包括Monkey.Monkeyrunner.Athrun.appium,目前仍在了解学习android测试框架.CTS等.本文主要为前段时间学习总结,由于刚接触不久,故本文难免会有些肤浅,大神请绕走~ [目录] 1.Monkeyrunner简介 2.Monkeyrunner工具特性 3.Monkeyrunner工具同Monkey工具的差别 4.运行Monkeyrunner 5.实例 6.学习笔记

monkeyrunner学习笔记

前面部分内容转自http://blog.csdn.net/zm2714/article/details/7980634 Android自动化测试之Monkeyrunner使用方法及实例 目前android SDK里自带的现成的测试工具有monkey 和 monkeyrunner两个.大家别看这俩兄弟名字相像,但其实是完完全全不同的两个工具,应用在不同的测试领域.总的来说,monkey主要应用在压 力和可靠性测试上,运行该命令可以随机地向目标程序发送各种模拟键盘事件流,并且可以自己定义发送的次数,

spark学习笔记总结-spark入门资料精化

Spark学习笔记 Spark简介 spark 可以很容易和yarn结合,直接调用HDFS.Hbase上面的数据,和hadoop结合.配置很容易. spark发展迅猛,框架比hadoop更加灵活实用.减少了延时处理,提高性能效率实用灵活性.也可以与hadoop切实相互结合. spark核心部分分为RDD.Spark SQL.Spark Streaming.MLlib.GraphX.Spark R等核心组件解决了很多的大数据问题,其完美的框架日受欢迎.其相应的生态环境包括zepplin等可视化方面

MyBatis学习笔记(一)入门

一.理解什么是MyBatis? MyBatis 是支持普通 SQL 查询,存储过程和高级映射的优秀持久层框架. MyBatis 消除了几乎所有的 JDBC 代码和参数的手工设置以及对结果集的检索. MyBatis 可以使用简单的XML 或注解用于配置和原始映射,将接口和 Java 的 POJO( Plain Old Java Objects,普通的Java 对象)映射成数据库中的记录. 1)MyBATIS 目前提供了三种语言实现的版本,包括:Java..NET以及Ruby.(我主要学习java,

jQuery学习笔记之一——jQuery入门与基础核心

因为工作的原因,所以自学了下jQuery,这里以李炎恢老师的教程为自觉教程,并记录学习中遇到的问题. 教程下载地址: http://www.verycd.com/topics/2956408/ 课件下载地址: http://download.csdn.net/download/ip_kv3000/8986013 jQuery类库下载地址: http://jquery.com/ jQuery入门  优势.历史.版本我就不多说了,网上有的是.至于为什么学,因为很有用,为什么非要学他,因为微软加入到了

C++并发编程学习笔记&lt;1&gt; 开始入门

开始入门 一个多线程C++程序是什么样子的? 它看上去和其他所有C++程序一样,通常是变量.类以及函数的组合.唯一真正的区别在于某些函数可以并发运行, 当然,为了并发地运行函数,必须使用特定的函数以及对象来管理各个线程. 从hello world 开始 让我们从一个经典的例子开始:一个打印"Hello World."的程序.一个非常简单的在单线程中运行的Hello, World 程序如下所示,当我们谈到多线程时,它可以作为一个基准, #include<iostream> i