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, 就可以很简单的直接写程序了,不需要做如何配置. 对新手来说,这是非常好的“初体验”, 会激发初学者的自信和兴趣. 而有些语言的开发环 ...
随机推荐
- 太刺激了,面试官让我手写跳表,而我用两种实现方式吊打了TA!
前言 本文收录于专辑:http://dwz.win/HjK,点击解锁更多数据结构与算法的知识. 你好,我是彤哥. 上一节,我们一起学习了关于跳表的理论知识,相信通过上一节的学习,你一定可以给面试官完完 ...
- 线上环境去除console
npm i -D babel-plugin-transform-remove-console babel.config.js // 获取 VUE_APP_ENV 非 NODE_ENV,测试环境依然 c ...
- shell小技巧(2)查找文件时,排除几种类型文件
代码: find -type f ! -name "*.jpg" ! -name "*.png" ! -name "*.jpeg" ! -n ...
- 读网文《将20M文件从30秒压缩到1秒,我是如何做到的?》做实验
先在微信公众号上看到网文<将20M文件从30秒压缩到1秒,我是如何做到的?>,然后在网上搜索了一下,看到了原文:https://www.jianshu.com/p/2e46ccb125ef ...
- PHP 安装 扩展时 抛出 /usr/local/Cellar/php@7.1/7.1.25/pecl 异常解决
liugx@MacBook-Pro ~/work/php/ext_source/php-xhprof-extension master make installmkdir: /usr/ ...
- Django+pycharm+mysql 实现用户登录/注册(Django五)
首先是让Django项目与mysql数据库初步建立连接 具体做法见:pycharm连接mysql(注意其中第二步MySQL驱动最好安装最新版的) 这里讲一下我在做这一步遇到的问题.一般Driver 那 ...
- 深度神经网络conda环境下载
介绍 因为使用conda下载数据有时候因为网络问题下载非常慢,因此我把conda的环境备份好,到时可以直接使用conda的conda create -n 新环境名字 –clone 环境的路径 , 直接 ...
- Linux实战(13):Centos8 同步时间
前言 以下操作是通过ntpdate命令实现同步 timedatectl set-timezone Asia/Shanghai # 设置时区 rpm -ivh http://mirrors.wlnmp. ...
- dubbo负载均衡
dubbo 一.同一个dubbo生产者服务怎么分布在不同服务器,且能进行负载均衡? 只要两个服务的id,接口,实现类一致(且dubbo:application名称一致,表示同一应用),注册到同一zoo ...
- RXJAVA之Subject
RxJava中常见的Subject有4种,分别是 AsyncSubject. BehaviorSubject.PublishSubject. ReplaySubject. AsyncSubject 使 ...