MoneyRunner API汇总
MonkeyRunner API 汇总
MonkeyRunner工具主要有三个类:
- MonkeyRunner
- MonkeyDevice
- MonkeyImage
1.MonkeyRunner类:
MonkeyRunner提供连接真机和模拟器、输入、暂停、警告框等方法。
常用方法
waitForConnection(float timeout,string deviceid),
from com.android.monkeyrunner import MonkeyRunner as mr
("connect devices...")
device=mr.waitForConnection()
# device=mr.waitForConnection(5,'127.0.0.1:62001')
2.MonkeyDevice类
MonkeyDevice类提供了安装和卸载程序包、开启Activity、发送按键和点击事件、运行测试包等方法。
常用方法
- installPackage (string path)
- removePackage (string package)
- startActivity (string uri, string action, string data, string mimetype, iterable categories dictionary extras, component component, flags)
- touch (integer x, integer y, integer type)
touch参数
integer x,x坐标值。
integer y,y坐标值。
integer type,key event类型(如DOWN、UP、DOWN_AND_UP)。
DOWN为按下事件 UP为弹起事件 DOWN_AND_UP为按下弹起事件。
- drag (tuple start, tuple end, float
duration, integer steps)
drag参数详细说明:
tuple
start,拖拽起始位置,为tuple类型的(x,y)坐标点。
tuple end,拖拽终点位置,为tuple类型的(x,y)坐标点。
float duration,拖拽手势持续时间,默认为1.0s。
-integer steps,插值点的步数,默认值为10。
实践案例:
连接设备,安装考研帮App并启动
代码实现
kyb_start.py
fromcom.android.monkeyrunnerimportMonkeyRunnerasmr
fromcom.android.monkeyrunnerimportMonkeyDeviceasmd
print("connect devices...")
device=mr.waitForConnection()
print("install app...")
device.installPackage(r'C:\Users\kaoyan3.1.0.apk')
package ='com.tal.kaoyan'
activity ='com.tal.kaoyan.ui.activity.SplashActivity'
runComponent = package +'/'+ activity
print("launch App...")
device.startActivity(component=runComponent)
代码执行方式
monkeyrunner scripfile
C:\Users>monkeyrunner C:\monkeyrunner_script\kyb.py
3.MonkeyImage类
MonkeyImage类在测试过程中用来保存各种格式的测试截图,并可以进行图像对比。
常用方法
- takeSnapshot() 进行屏幕截图
- writeToFile() 保存图像文件到指定的文件路径
用法示例
fromcom.android.monkeyrunnerimportMonkeyImageasmi
print("takeSnapshot")
screenshot=device.takeSnapshot()
screenshot.writeToFile(r'C:\monkeyrunner_script\test.png','png')
综合实践
测试场景
- 连接设备,自动安装并启动考研帮app
- 启动后登录账号,然后截图并保存到指定文件位置。
思路分析
- 连接设备
- 安装app
- 启动app
- 输入用户名密码点击登录按钮
- 截图
脚本实现
kyb_login.py
fromcom.android.monkeyrunnerimportMonkeyRunnerasmr
fromcom.android.monkeyrunnerimportMonkeyDeviceasmd
fromcom.android.monkeyrunnerimportMonkeyImageasmi
print("connect devices...")
device=mr.waitForConnection()
print(" install app")
device.installPackage(r'C:\Users\kaoyan3.1.0.apk')
print("launch app...")
package='com.tal.kaoyan'
activity='com.tal.kaoyan.ui.activity.SplashActivity'
runComponent=package+'/'+activity
device.startActivity(component=runComponent)
mr.sleep(3)
print("touch cancel button")
device.touch(618,895,'DOWN_AND_UP')
mr.sleep(1)
print("touch skip button")
device.touch(804,67,'DOWN_AND_UP')
mr.sleep(1)
print("input username and password")
device.touch(57,373,'DOWN_AND_UP')
mr.sleep(2)
device.type('zxw1234')
device.touch(152,480,'DOWN_AND_UP')
mr.sleep(2)
device.type('zxw123456')
mr.sleep(2)
print("touch login button")
device.touch(331,634,'DOWN_AND_UP')
print("takeSnapshot")
screenshot=device.takeSnapshot()
screenshot.writeToFile(r'C:\monkeyrunner\kyb.png','png')
问题汇总:
方法调用
AttributeError:typeobject'com.android.monkeyrunner.XXXXX'hasnoattribute XXXXXX
检查调用的方法名,特别是注意区分大小写。
字符编码
SyntaxError: Non-ASCII characterinfile'C:\monkeyrunner_script\kyb.py',butno encoding declared;
需要在代码顶部补充 # -- coding: utf-8 -- 或者去掉代码中的中文字符
#本文源于网络学习汇总,如有侵权请联系第一时间删除#
MoneyRunner API汇总的更多相关文章
- 数组API汇总
数组API汇总 Javascript数组API: 1.将数组转化为字符串:2种: 1.var str=String(str); 将数组转化为字符串并分隔每个元素; var arr=[1,2,3]; ...
- elasticsearch Java API汇总
http://blog.csdn.net/changong28/article/details/38445805#comments 3.1 集群的连接 3.1.1 作为Elasticsearch节点 ...
- Android之所有API汇总
这里就是所有的Android API,包含所有的API类:http://www.android-doc.com/reference/packages.html
- openstack中Nova组件images的全部python API 汇总
感谢朋友支持本博客.欢迎共同探讨交流,因为能力和时间有限,错误之处在所难免.欢迎指正! 假设转载,请保留作者信息. 博客地址:http://blog.csdn.net/qq_21398167 原博文地 ...
- 微信隐藏的webJS Api汇总
1.右侧菜单增加"查看公众账号" API document.getElementById('post-user').addEventListener('click', functi ...
- unity3d API汇总
using UnityEngine; using System.Collections; public class AllFunction : MonoBehaviour { /* API Versi ...
- openstack中nova组件Hypervisors、Floating_ips的全部python API 汇总
感谢朋友支持本博客,欢迎共同探讨交流,因为能力和时间有限.错误之处在所难免,欢迎指正! 假设转载.请保留作者信息. 博客地址:http://blog.csdn.net/qq_21398167 原博文地 ...
- Java Web 常用在线api汇总(不定时更新)
1.Hibernate API Documentation (3.2.2.ga) http://www.hibernate.org/hib_docs/v3/api/ 2.Spring Framewor ...
- Appium Python API 汇总(中文版)
网络搜集而来,留着备用,方便自己也方便他人.感谢总结的人! 1.contexts contexts(self): Returns the contexts within the current ses ...
随机推荐
- TensorFlow的介绍和安装
TensorFlow概要 由google Brain开源,设计初衷是加速机器学习的研究,2015年11月在GitHub上开源,2016年4月分布式版本,2017年发布了1.0版本,趋于稳定. Tens ...
- jQuery属性操作总结
jquery属性包括以下几个: attr(name|pro|key,val|fn) removeAttr(name) prop(n|p|k,v|f)1.6+ removeProp(name)1.6+ ...
- 团队第九次 # scrum meeting
github 本此会议项目由PM召开,召开时间为4-14日晚上9点,以大家在群里讨论为主 召开时长10分钟 任务表格 袁勤 负责协调前后端 https://github.com/buaa-2016/p ...
- Javascript面向对象编程(二)
子承父业 该方法利用了call,apply,按照原有的方式进行复制,做一些改进,最后进行事务处理.废话不多说,直接看例子. 在这里我提一下,call和apply的异同:它们两个都可以改变this指向, ...
- 关于Float.parseFloat()的一点探讨
最近在解决线上的bug时,遇到一个问题. 第三方传过来的课程编码时4214410000,然而我们存进数据库的值却变成了4214409980.查遍了所有的代码都查不到有对这个值修改的代码.最后,通过打印 ...
- 分享自己用的php分页类实例源码
分享一个我自己用着的php分页类实例源码,供大家参考,具体内容如下: <?php /** file: page.class.php 完美分页类 Page */ class Page { priv ...
- python_12 模块
在python中,一个.py文件就称之为一个模块(module) 好处:提高代码的可维护性 模块分为三种:1.python标准库 2.第三方库 3.应用程序自定义模块 import的作用: ...
- if判断,switch语句
if ; else if; else; 判断操作: 格式示例: public class scanner { public static void main(String[] args){ int a ...
- TensorFlow初探之简单神经网络训练mnist数据集(TensorFlow2.0代码)
from __future__ import print_function from tensorflow.examples.tutorials.mnist import input_data #加载 ...
- springboot项目创建
1.在eclipse中创建springboot项目,右键找到New,然后找到Spring Starter Project, 如果menu中找不到Spring Starter Project就选择oth ...