【monkeyrunner】monkeyrunner 的主要API和实例
MonkeyRunner简介
monkeyrunner工具提供了编写控制Android设备或仿真器从Android的代码之外程序的API。随着monkeyrunner,您可以编写安装一个Android应用程序或测试包,运行它,发送击键它,需要它的用户界面截图,并将截图工作站上的Python程序。该monkeyrunner工具主要设计在功能/框架水平和运行单元测试套件来测试应用程序和设备,但你可以自由地将其用于其它用途。
monkeyrunner工具为Android的测试,这些独特的功能:
1.多设备控制:monkeyrunner API可以跨多个设备或仿真器应用一个或多个测试套件。您可以物理连接的所有设备或启动了所有的仿真器(或两者兼有)同时,连接到每一个轮流程序,然后运行一个或多个测试。您也可以启动一个模拟器配置编程,运行一个或多个测试,然后关闭模拟器。
2.功能测试:monkeyrunner可以运行Android应用程序的自动启动到完成测试。您提供的输入值与键盘或触摸事件,并查看结果的截图。
3.回归测试 - monkeyrunner可以运行一个应用程序,并比较其输出截图一组被称为是正确的截图测试应用程序的稳定性。
4.可扩展的自动化-由于monkeyrunner是一个API工具包,你可以开发基于Python模块和控制Android设备程序的整个系统。除了 使用monkeyrunner API本身,你可以使用标准的Python OS和 子 模块的调用Android的工具,比如 Android的调试桥。
monkeyrunner 的三个模块
所述monkeyrunner API被包含在包中的三个模块 com.android.monkeyrunner:
1.MonkeyRunner:一类为monkeyrunner程序的实用方法。这个类提供了用于连接monkeyrunner至设备或模拟器的方法。它也提供了用于创建用户界面的monkeyrunner程序和用于显示内置帮助的方法。
2.MonkeyDevice:表示一个设备或模拟器。这个类提供了安装和卸载程序包,启动一个活动以及发送键盘或触摸事件到应用程序的方法。您也可以使用这个类来运行测试包。
3.MonkeyImage:表示一个屏幕捕获图像。这个类提供了捕捉屏幕,将位图图像,以各种不同的格式,比较两个MonkeyImage对象,写一个图像文件的方法。
- #导入三个模块MonkeyRunner,MonkeyDevice,MonkeyImage
- from com.android.monkeyrunner import MonkeyRunner as mr
- from com.android.monkeyrunner import MonkeyDevice as md
- from com.android.monkeyrunner import MonkeyImage as mi
monkeyrunner的接入设备API
adb devices 命令可以获取设备对象的名称
- #获取接入的设备,前面的为等待时间(s),后面正则或者设备的全名,返回一个device对象
- #device=mr.WaitForConnection(1,'ss1z1')
- device=mr.WaitForConnection()
安装apk
device.startActivity("package名/activity名")
- device.installPackage('myproject/bin/MyApplication.apk')
卸载,这应该是应用的包名
- device.removePackage ('com.example.android.notepad')
启动入口活动
- device.startActivity (component='com.android.htccontacts/com.android.htccontacts.ContactsTabActivity')
等待时间,秒
- mr.sleep(3)
唤醒屏幕
- mr.wake()
触摸屏幕,x,y坐标,触摸类型三种,UP,DOWN,DOWN_AND_UP
- device.touch(10,20,DOWN_AND_UP)
设备屏幕上模拟拖曳
用法:MonkeyDevice.drag(start,end,duration,steps)
start:拖曳开始坐标 - The starting point for the drag (a tuple (x,y) in pixels)
end:拖曳结束坐标点- The end point for the drag (a tuple (x,y) in pixels
duration:持续时间 - Duration of the drag in seconds (default is 1.0 seconds)
steps:拖曳步骤- The number of steps to take when interpolating points. (default is 10)
- device.drag((472,1067),(482,560))
按键指令,前面为按键名称,如HOME键
- home键:KEYCODE_HOME
- back键:KEYCODE_BACK
- send键:KEYCODE_CALL
- end键:KEYCODE_ENDCALL
- 上导航键:KEYCODE_DPAD_UP
- 下导航键:KEYCODE_DPAD_DOWN
- 左导航:KEYCODE_DPAD_LEFT
- 右导航键:KEYCODE_DPAD_RIGHT
- ok键:KEYCODE_DPAD_CENTER
- 上音量键:KEYCODE_VOLUME_UP
- 下音量键:KEYCODE_VOLUME_DOWN
- power键:KEYCODE_POWER
- camera键:KEYCODE_CAMERA
- menu键:KEYCODE_MENU
- device.press('KEYCODE_HOME','DOWN_AND_UP')
输入一个字符串
- device.type("你好")
获取monkeyrunner的帮助
- device.help()
获取设备系统环境变量的名称
- device.getProperty()
重启设备
- device.reboot()
一些图片的操作API
- #获取截图
- result1=device.takeSnapshot()
- #将结果输出到文件,前面为路径,后面为图片类型,可写可不写
- result1.writeToFile('D:/demo1.png','png')
- #两种写法都可以
- result1.writeToFile('D:\\demo1.png','png')
- #将当前图像转换为一个特定的格式并将其作为字符串返回,然后你可以访问的iterable二进制字节。
- result.convertToBytes()
- #图片的对比,先获取第二张截图
- result2=device.takeSnapshot()
- result2.writeToFile('D:/demo2.png','png')
- #判断图片相识度是否是为90%
- if(result1.sameAs(result2,0.9)):
【monkeyrunner】monkeyrunner 的主要API和实例的更多相关文章
- Android自动化学习笔记之MonkeyRunner:官方介绍和简单实例
---------------------------------------------------------------------------------------------------- ...
- Google Map JavaScript API V3 实例大全
Google Map JavaScript API V3 实例大全 基础知识 简单的例子 地理位置 语言 位置 坐标 简单的投影 事件 简单事件 关闭事件 多次添加事件 事件属性 控制 php禁用ui ...
- [Python][flask][flask-login]关于flask-login中各种API使用实例
本篇博文跟上一篇[Python][flask][flask-wtf]关于flask-wtf中API使用实例教程有莫大的关系. 简介:Flask-Login 为 Flask 提供了用户会话管理.它处理了 ...
- [Python][flask][flask-wtf]关于flask-wtf中API使用实例教程
简介:简单的集成flask,WTForms,包括跨站请求伪造(CSRF),文件上传和验证码. 一.安装(Install) 此文仍然是Windows操作系统下的教程,但是和linux操作系统下的运行环境 ...
- The MySQL C API 编程实例
在网上找了一些MYSQL C API编程的文章,看了后认为还是写的不够充分,依据自己经验写了这篇<The MySQL C API 编程实例>,希望对须要调用到MYSQL的C的API的朋友有 ...
- 腾讯QQAndroid API调用实例(QQ分享无需登录)
腾讯QQAndroid API调用实例(QQ分享无需登录) 主要分为两个步骤: 配置Androidmanifest.xml 修改activity里边代码 具体修改如下: 1.Activity代 ...
- 微信WeixinJSBridge API使用实例
http://www.jb51.net/article/66642.htm 这篇文章主要介绍了微信WeixinJSBridge API使用实例,本文直接给出HTML代码,代码中包含了很多实用功能,如图 ...
- javamail模拟邮箱功能--邮件回复-中级实战篇【邮件回复方法】(javamail API电子邮件实例)
引言: JavaMai下载地址l jar包:http://java.sun.com/products/javamail/downloads/index.html 此篇是紧随上篇文章而封装出来的,阅读本 ...
- javamail模拟邮箱功能获取邮件内容-中级实战篇【内容|附件下载方法】(javamail API电子邮件实例)
引言: JavaMail jar包下载地址:http://java.sun.com/products/javamail/downloads/index.html 此篇是紧随上篇文章而封装出来的,阅读本 ...
- 关于操作 ASP.NET Web API的实例
WCF的野心造成了它的庞大复杂,HTTP的单纯造就了它的简单优美.为了实现分布式Web应用,我们不得不将两者凑合在一起 —— WCF服务以HTTP绑定宿主于IIS. 于是有了让人晕头转向的配置.让人郁 ...
随机推荐
- JAVA面试题整理(7)-Redis
Redis面试题汇总 1.Redis用过哪些类型数据,以及Redis底层怎么实现 分析:是不是觉得这个问题很基础,其实我也这么觉得.然而根据面试经验发现,至少百分八十的人答不上这个问题.建议,在项目中 ...
- 彻底搞懂DOM事件处理(零)引子
通过合理使用JavaScript,可以为网站用户提供更好的交互体验.这主要是因为JavaScript能够让网站对用户的各种操作及时做出"反馈".这种"反馈"使网 ...
- codevs 1690 开关灯 线段树+延迟标记
1690 开关灯 时间限制: 1 s 空间限制: 128000 KB 题目描述 Description YYX家门前的街上有N(2<=N<=100000)盏路灯,在晚上六点之前,这 ...
- c++ 字符串拷贝以及合并
#include<iostream> #include<string> using namespace std; class stringfun { ]; public: vo ...
- Hadoop平台的基本组成与生态系统
Hadoop系统运行于一个由普通商用服务器组成的计算集群上,该服务器集群在提供大规模分布式数据存储资源的同时,也提供大规模的并行化计算资源. 在大数据处理软件系统上,随着Apache Hadoop系统 ...
- Eclips安装SVN插件
1.eclipse -> Help ->Install New Software->add 2.弹出窗的"Name"和"URL"中输入如下内容 ...
- IOS-网络(大文件下载)
一.不合理方式 // // ViewController.m // IOS_0131_大文件下载 // // Created by ma c on 16/1/31. // Copyright © 20 ...
- qt Cannot connect creator comm socket /tmp/qt_temp.S26613/stub-socket: No such
Tool->Options->Environment->General 将terminal改为 xterm -e
- bzoj1073
题意: k短路 题解: A* 当然是抄了zzd的代码 然而需要特判 为什么把bool改成int爆空间!!! 代码: #include<bits/stdc++.h> using namesp ...
- ansible入门02
1.常用模块 1.1 group模块 添加或删除组 name= state=:present(添加),absent(删除) sy ...