前言:本文是在具备下载Android-sdk并配备adb环境的情况下进行的
检查环境,命令行输入monkeyrunner
下图所示,显示版本:
本文包含三部分:
1、截图报错处理
2、应用代码示例
3、monkeyrunner常用的操作
一、monkeyrunner截图报错处理
报错:
E/Screenshot: Unsupported protocol: 2
2、解决方法:
重新下载下图的jar包
链接:https://github.com/xSAVIKx/AndroidScreencast/releases/tag/v0.0.12s
3、下载好后,将该文件拉入到Android sdk的tools文件下的lib文件,下图所示
4、cmd中运行该jar包,可以直接将jar包拉入到命令框内:
其中D:\aa是该文件所在的路径
5、成功启动程序后,可以接着在命令行窗口中进行monkeyrunner操作
二、应用代码示例
代码解释:因为代码中有中文注释,所以需要加入编码声明
#coding=utf-8,
示例代码的作用是对app进行卸载前截图、然后卸载app,对卸载app后的页面进行截图、再安装app、再对安装app后的页面进行截图
#coding=utf-8
# 引入monkeyrunner模块
from com.android.monkeyrunner import MonkeyRunner
from com.android.monkeyrunner import MonkeyDevice
from com.android.monkeyrunner import MonkeyImage
# from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice, MonkeyImage
# 连接手机设备
device = MonkeyRunner.waitForConnection()
# 截图操作
result = device.takeSnapshot()
# 将截图保存到该路径下
result.writeToFile('D:\\aa\\1.png','png')
# 卸载该包名的app
device.removePackage('com.xx.xx')
print ('卸载成功!')
# 停留3秒
MonkeyRunner.sleep(3)
# 截图操作
result = device.takeSnapshot()
result.writeToFile('D:\\aa\\2.png','png')
# 安装该路径下的app
device.installPackage('D:\\aa\\demoDebug-v2.1.24-9aa80.apk')
print ('安装成功!')
# 截图
result = device.takeSnapshot()
result.writeToFile('D:\\aa\\3.png','png')
三、monkeyrunner常用的操作
1、在命令行中逐个敲入命令
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice, MonkeyImage
device = MonkeyRunner.waitForConnection()
输入上方两行命令,接下来可以进行自己的操作,下图所示
注意:在命令行中结束monkeyrunner操作时可以输入快捷键Ctrl+D退出
2、运行python脚本
在命令行中输入monkeyrunner xx.py运行脚本,下图所示
3、连接设备(默认连接、参数连接)
默认连接设备:
device = MonkeyRunner.waitForConnection()
参数连接设备:
device = MonkeyRunner.waitForConnection(1.0,‘xxxxx’)
4、启动activity
device.startActivity(component=“包名/Activity”)
5、for循环操作:
for i in range(1,10): print(i)
打印1-10
6、暂停操作、滑动屏幕操作
(1)MonkeyRunner.sleep(秒数,浮点数)
(2)滑动屏幕
device.drag(X,Y,D,S) ,X 开始坐标 Y 结束坐标 D 拖动持续时间(以秒为单位),默认1.0秒 S 插值点时要采取的步骤,默认值是10
device.drag((111,111),(222,222),2,10)
(3)连续滑动屏幕
for i in range(1,6): device.drag((111,111),(333,333),0.1,10)
7、发送字符
device.type(‘字符’)
8、点击事件
device.touch(x,y,触摸事件类型)
触摸事件类型一般为DOWN_AND_UP
9、重启手机、唤醒屏幕
device.reboot()
device.wake()