新手学 Monkeyrunner2-个人整理的 monkeyrunner API

· 2015年06月19日 · 最后由 zhens 回复于 2016年02月16日 · 2872 次阅读

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 MonkeyDevice as mi

monkeyrunner 的接入设备 API

adb devices 命令可以获取设备对象的名称

#获取接入的设备,前面的为等待时间(s),后面正则或者设备的全名,返回一个device对象
#device=mr.WaitForConnection(1,'ss1z1')
device=mr.WaitForConnection()

安装 apk

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,20DOWN_AND_UP)

按键指令,前面为按键名称,如 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)):

最后,飞总强烈要求我贴上他的博客进行知识分享。http://www.cnblogs.com/zhangfei/p/,希望大家踊跃提问。这是他唯一的愿景

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 9 条回复 时间 点赞

别这样啊。。写教程也好好写,贴代码不是回事情啊。

你既然新手学。。。你得有上下文。另外这个是社区,有质量,有技术深度得社区,不是个人的 blog,还请端正态度

#3 · 2015年06月19日 Author

#2 楼 @monkey 我再完善完善,这个代码放着。文章我再重新梳理

#3 楼 @mads mads。。我一直很鼓励你的分享。但是你自己做出来的东西是你的一块牌子。无论 ppt,还是文章。既然写了,就需要去认真负责,这是一种态度。你说是么?

启动一个Acitvity,注意是启动一个活动,而不是一个应用,因为活动都是可以单独活动的

这个。。。。。。你也太硬了点吧。。

#5 · 2015年06月19日 Author

#4 楼 @monkey 在回家的路上。。。。有什么不足,等我到家再讨论。。。。

写的挺好的。
另外,第一次知道这是个社区,有质量,有技术深度得社区,不是个人的 blog,看来我以后也不能太随意了。

#5 楼 @mads 启动一个 Acitvity,注意是启动一个活动,而不是一个应用,因为活动都是可以单独活动的 这句话翻译的太硬了。

#2 · 2015年06月20日 Author

#7 楼 @lihuazhang 这个应该是跟 appium 一样是入口活动吧。我一直是 appt 或者 hierarchyviewer 获取的

说句实话 还是写的不错的

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册