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, 就可以很简单的直接写程序了,不需要做如何配置. 对新手来说,这是非常好的“初体验”, 会激发初学者的自信和兴趣. 而有些语言的开发环 ...
随机推荐
- 文件压缩跟解压(本地&Linux服务器)
远程解压需要的jar包: <dependency> <groupId>commons-net</groupId> <artifactId>commons ...
- kali命令大全
arch 显示机器的处理器架构(1)uname -m 显示机器的处理器架构(2)uname -r 显示正在使用的内核版本dmidecode -q 显示硬件系统部件 - (SMBIOS / DMI)hd ...
- mobiscroll
https://docs.mobiscroll.com/3-2-3/jquery/calendar#!options
- 图解并发与并行-分别从CPU和线程的角度理解
本文作为图解java并发编程的第三篇,前2篇访问地址如下所示: 图解进程线程.互斥锁与信号量-看完还不懂你来打我 8成以上的java线程状态图都画错了--图解java并发第二篇 一.CPU角度的并发与 ...
- [剑指Offer]30-包含min函数的栈
题目 定义栈的数据结构,请在该类型中实现一个能够得到栈中所含最小元素的min函数(时间复杂度应为O(1)). 题解 辅助栈记录当前最小值. 代码 import java.util.Stack; pub ...
- Spring Boot 所有相关的配置信息
加载顺序 如上图所示,图片是从官网上截取的,这些配置信息都会加载,只不过顺序在前的会覆盖掉后面的 上图的所有配置信息都会以(key,value)的形式加载到Spring中的Environment中,也 ...
- 线程的阻塞 sleep() wait() yield()
为了解决对共享存储区的访问冲突,Java 引入了同步机制,现在让我们来考察多个线程对共享资源的访问,显然同步机制已经不够了,因为在任意时刻所要求的资源不一定已经准备好了被访问,反过来,同一时刻准备好了 ...
- FreeSWITCH 处理Refer盲转时,UUI传递不对(没有将SIP 消息头Refer-To中的User-to-User传递给B-Leg)
运行环境: CentOS 7.6 FreeSWICH 1.6.18 一.问题场景: FreeSWITCH收到REFER命令后,重新发起的INVITE消息中的 "U ...
- 【Netty之旅四】你一定看得懂的Netty客户端启动源码分析!
前言 前面小飞已经讲解了NIO和Netty服务端启动,这一讲是Client的启动过程. 源码系列的文章依旧还是遵循大白话+画图的风格来讲解,本文Netty源码及以后的文章版本都基于:4.1.22.Fi ...
- 删除链表的倒数第N个节点(头部加一个哑结点)
我的代码:测试用例[1,2]2, 时会报错,无法不能删除第一个指针 /** * Definition for singly-linked list. * public class ListNode ...