MonkeyRunner+Python自动化测试一
- 多设备控制:monkeyrunner API 可以跨多个设备或模拟器应用一个或多个测试套件。您可以通过物理方式连接所有设备并/或同时启动所有模拟器,以编程方式依次连接到每个设备,然后运行一个或多个测试。您还可以编程方式启动模拟器配置,运行一个或多个测试,然后关闭模拟器。
- 功能测试:monkeyrunner 可以对 Android 应用自始至终地运行自动化测试。您可以通过按键或轻触事件提供输入值,并以屏幕截图的形式查看结果。
- 回归测试 - monkeyrunner 可通过以下方法测试应用稳定性:运行某个应用,然后将它的输出屏幕截图与一组已知正确的屏幕截图进行比较。
- 可扩展的自动化 - 由于 monkeyrunner 是一个 API 工具包,因此您可以开发一整套系统(包括基于 Python 的模块和用于控制 Android 设备的程序)。除了使用 monkeyrunner API 本身,您还可以使用标准 Python os 和 subprocess模块来调用 Android 工具,例如 Android 调试桥。
|
方法
|
|
|
void
|
alert (string message, string title, string okTitle)
针对运行当前程序的进程显示一个提醒对话框。
|
|
integer
|
choice(string message, iterable choices, string title)
显示一个对话框,其中列出了针对运行当前程序的进程的选项。
|
|
void
|
help(string format)
使用指定格式以类似于 Python 的 pydoc 工具的样式显示 monkeyrunner API 引用。
|
|
string
|
input (string message, string initialValue, string title, string okTitle, string cancelTitle)
显示一个接受输入的对话框。
|
|
void
|
sleep (float seconds)
将当前程序暂停指定的秒数。
|
|
MonkeyDevice
|
waitForConnection (float timeout, string deviceId)
尝试在 monkeyrunner 后端与指定的设备或模拟器之间建立连接。返回的是MonkeyDeviced实例
|
|
常量
|
||
|
string
|
DOWN
|
将此参数与 press() 或 touch() 的 type 参数一起使用可发送 DOWN 事件。
|
|
string
|
UP
|
将此参数与 press() 或 touch() 的 type 参数一起使用可发送 UP 事件。
|
|
string
|
DOWN_AND_UP
|
将此参数与 press() 或 touch() 的 type 参数一起使用可发送 DOWN 事件,紧跟着发送 UP 事件。
|
|
方法
|
|
|
void
|
broadcastIntent (string uri, string action, string data, string mimetype, iterable categories dictionary extras, component component, iterable flags)
向此设备广播 Intent,就像 Intent 来自应用一样。
|
|
void
|
drag (tuple start, tuple end, float duration, integer steps)
在此设备的屏幕上模拟拖动手势(轻触、按住和移动)。
|
|
object
|
getProperty (string key)
在给定系统环境变量的名称后,返回此设备的相应值。此方法的详细说明中列出了可用的变量名称。
|
|
object
|
getSystemProperty (string key)
. adb shell getprop <key>. This is provided for use by platform developers. 的等效 API
|
|
void
|
installPackage (string path)
将包含在 packageFile 中的 Android 应用或测试软件包安装到此设备上。如果应用或测试软件包已安装,则会被替换。
|
|
dictionary
|
instrument (string className, dictionary args)
在 Android 插桩下运行指定的组件,并在字典中返回结果,该字典的具体格式由正在运行的组件决定。该组件必须已存在于此设备上。
|
|
void
|
press (string name, dictionary type)
将 type 指定的按键事件发送到键码(name)指定的按键。
|
|
void
|
reboot (string into)
将此设备重新启动到 bootloadType 指定的引导加载程序中。
|
|
void
|
removePackage (string package)
从此设备中删除指定的软件包,包括其数据和缓存。
|
|
object
|
shell (string cmd)
执行 adb shell 命令并返回结果(如果有)。
|
|
void
|
startActivity (string uri, string action, string data, string mimetype, iterable categories dictionary extras, component component, flags)
通过发送根据提供的参数构造的 Intent,在此设备上启动一个 Activity。
|
|
MonkeyImage
|
takeSnapshot()
捕获此设备的整个屏幕缓冲区,并生成一个 MonkeyImage 对象,其中包含当前显示内容的屏幕截图。
|
|
void
|
touch (integer x, integer y, integer type)
将 type 指定的轻触事件发送到由 x 和 y 指定的屏幕位置。
|
|
void
|
type (string message)
将消息中包含的字符发送到此设备,就好像这些字符是用设备键盘输入的一样。这等同于使用按键事件类型 DOWN_AND_UP 针对 message 中的每个键码调用 press()。
|
|
void
|
wake ()
唤醒此设备的屏幕。
|
|
属性组
|
属性
|
说明
|
备注
|
|
build
|
board
|
设备主板的代号
|
请参阅 Build
|
|
brand
|
为其定制操作系统的运营商或提供商。
|
||
|
device
|
设备设计名称。
|
||
|
fingerprint
|
当前正在运行的 Build 的唯一标识符。
|
||
|
host
|
|||
|
ID
|
变更清单编号或标签。
|
||
|
model
|
设备的最终用户可见名称。
|
||
|
product
|
整体产品名称。
|
||
|
tags
|
描述 Build 的逗号分隔标记,例如“unsigned”和“debug”。
|
||
|
type
|
Build 类型,例如“user”或“eng”。
|
||
|
user
|
|||
|
CPU_ABI
|
本机代码指令集的名称,格式为 CPU 类型加 ABI 惯例。
|
||
|
manufacturer
|
产品/硬件制造商。
|
||
|
version.incremental
|
源代码控制系统用来表示此版本的软件的内部代号。
|
||
|
version.release
|
此版本的软件的用户可见名称。
|
||
|
version.sdk
|
与此版本的操作系统相关联的用户可见 SDK 版本。
|
||
|
version.codename
|
当前开发代号,如果此版本的软件已发布,则为“REL”。
|
||
|
display
|
width
|
设备的显示屏宽度(以像素为单位)。
|
如需了解详情,请参阅 DisplayMetrics。
|
|
height
|
设备的显示屏高度(以像素为单位)。
|
||
|
density
|
显示屏的逻辑密度。系统会按照此系数调整 DIP(密度无关像素)单位,以适应设备的分辨率。调整 DIP 是为了使 1 DIP 相当于 160 ppi 显示屏上的一个像素。例如,在 160 dpi 屏幕上,密度为 1.0,而在 120 dpi 屏幕上,密度为 0.75。
该值并非与实际屏幕尺寸完全相符,但会根据显示屏 DPI 的大幅变化进行调整。如需了解详情,请参阅 density。
|
||
|
am.current
|
package
|
当前正在运行的软件包的 Android 软件包名称。
|
am.current 键可返回当前正在运行的 Activity 的相关信息。
|
|
action
|
当前 Activity 的操作。其格式与软件包清单中 action 元素的 name 属性相同。
|
||
|
comp.class
|
启动当前 Activity 的组件的类名称。如需了解详情,请参阅 comp.package。
|
||
|
comp.package
|
启动当前 Activity 的组件的软件包名称。组件由软件包名称和软件包所包含的类的名称指定。
|
||
|
data
|
启动当前 Activity 的 Intent 中包含的数据(如果有)。
|
||
|
categories
|
由启动当前 Activity 的 Intent 指定的类别。
|
||
|
clock
|
realtime
|
自设备重新启动后经过的毫秒数,包括深度睡眠时间。
|
如需了解详情,请参阅 SystemClock。
|
|
uptime
|
自设备重新启动后经过的毫秒数,不包括深度睡眠时间
|
||
|
millis
|
从 UNIX 纪元开始算起的当前时间(以毫秒为单位)。
|
|
方法
|
|
|
string
|
convertToBytes (string format)
将当前图片转换为特定格式并以字符串形式返回该图片,然后您可以将其作为二进制字节的可迭代对象来访问。
|
|
tuple
|
getRawPixel (integer x, integer y)
以 (a,r,g,b) 格式的整数元组形式返回图片位置 (x,y) 处的单个像素。
|
|
integer
|
getRawPixelInt (integer x, integer y)
以 32 位整数形式返回图片位置 (x,y) 处的单个像素。
|
|
MonkeyImage
|
getSubImage (tuple rect)
根据当前图片的矩形选择区创建一个新的 MonkeyImage 对象。
|
|
boolean
|
sameAs (MonkeyImage other, float percent)
将此 MonkeyImage 对象与另一个对象进行比较,并返回比较结果。percent 参数指定两张“等同”的图片之间可以存在
的百分比差异。
|
|
void
|
writeToFile (string path, string format)
将当前图片以 format 指定的格式写入 filename 指定的文件。如果未提供扩展名且未指定格式,则使用默认格式“png”
(Portable Network Graphics)。
|
MonkeyRunner+Python自动化测试一的更多相关文章
- Python自动化测试入门
在当前自动化测试中,最火的语言就是Python,很容易上手.然后就是Java+testng+appium做的UI自动化测试.下面我们就用Python脚本,做自动化集成测试. (1)获取APK文件中ID ...
- python自动化测试(2)-自动化基本技术原理
python自动化测试(2) 自动化基本技术原理 1 概述 在之前的文章里面提到过:做自动化的首要本领就是要会 透过现象看本质 ,落实到实际的IT工作中就是 透过界面看数据. 掌握上面的这样的本领 ...
- python自动化测试(4)-使用第三方python库技术实现
python自动化测试(4)-使用第三方python库技术实现 1 概述 关于测试的方法论,都是建立在之前的文章里面提到的观点: 功能测试不建议做自动化 接口测试性价比最高 接口测试可以做自动化 ...
- python自动化测试(3)- 自动化框架及工具
python自动化测试(3) 自动化框架及工具 1 概述 手续的关于测试的方法论,都是建立在之前的文章里面提到的观点: 功能测试不建议做自动化 接口测试性价比最高 接口测试可以做自动化 后面所谈到 ...
- (学习网址)Python 自动化测试
1.Python自动化测试地址 http://www.wtoutiao.com/author/python-selenium.html 2.unittest参考网址: 1)python自动化测试报告H ...
- python 自动化测试资料
python 自动化测试资料: http://yunpan.cn/QXVvwVJsAsPnb
- selenium + python 自动化测试环境搭建
selenium + python 自动化测试 —— 环境搭建 关于 selenium Selenium 是一个用于Web应用程序测试的工具.Selenium测试直接运行在浏览器中,就像真正的用户在操 ...
- android - python 自动化测试 移动互联网 - SegmentFault
android - python 自动化测试 移动互联网 - SegmentFault splinter
- Python自动化测试 -ConfigParser模块读写配置文件
C#之所以容易让人感兴趣,是因为安装完Visual Studio, 就可以很简单的直接写程序了,不需要做如何配置. 对新手来说,这是非常好的“初体验”, 会激发初学者的自信和兴趣. 而有些语言的开发环 ...
随机推荐
- ASP.NET Uploadify 上传文件过大 报错(http error)借鉴,以防忘记
Uploadify上传文件原来很早之前用过,没发现什么问题.今天再使用过程中,当文件大于30M的时候就会报错404.查看错误消息提示配置最大上传太小了.需要修改. 记得原来配置上传文件大小在这里:&l ...
- 小程序开发-block组件的使用
微信小程序中,block不是一个组件,而是一个包装元素,不会在页面中做任何渲染. 使用情况:条件渲染 wx:if 因为 wx:if 是一个控制属性,需要将它添加到一个标签/组件上,用于控制隐藏与显示. ...
- Zabbix如何监控Linux防火墙服务
今天在巡检的时候,突然想到Zabbix能否监控Linux的防火墙服务呢? 显然是可以的,但是Zabbix 5下默认的模板"Template OS Linux by Zabbix agent& ...
- Oracle中树形查询使用方法
树形查询一般用于上下级场合,使用的特殊sql语法包括level,prior,start with,connect by等,下面将就实例来说明其用法. 表定义: create table tb_hier ...
- 查看CentOs6.5/7的系统版本号
在centos6.5上用 [root@msg45 ~]# lsb_release -aLSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0- ...
- SSH框架下页面跳转入门篇
一.完成目标,因为WEB-INF下面的界面不能通过输入地址的方式直接访问,所以需要在后台定义一个方法跳转过去. 步骤1:.创建普通类继承ActionSupport类,并定义一个方法返回需要跳转的路径 ...
- webstorm中emmet展开a标签和行内元素不换行的解决办法
大家好我是木瓜太香,大家在使用 webstorm 编写 html 的时候可能会遇到展开部分标签挨在一起的情况,相信很多小伙伴都想解决这个问题,接下来我们就开始吧! 先来看看我们输入如下 emmet 代 ...
- 如何用canvas拍出 jDer's工作照
背景 在京东,就职满五年的老员工被称作"大佬",如果满了十年,那就要被称之为"超级大佬"了. 从 2016 年 5 月 19 日开始,每一年的这一天都被定为京东 ...
- 蒲公英 · JELLY技术周刊 Vol.22: npm i react-router@6.0.0-beta.0
蒲公英 · JELLY技术周刊 Vol.22 近期 React Router 已经释出了 6.x 的 beta 版本,正式版本已经不远了,作为 React 生态中的重要组成部分,React Route ...
- JVM运行时数据区--本地方法栈
本地方法栈 1.Java虚拟机栈用于管理Java方法的调用,而本地方法栈用于管理本地方法(一般非Java实现的方法)的调用 2.本地方法栈,也是线程私有的. 3.允许被实现成固定或者是可动态拓展的内存 ...