monkeyrunner的官方文档:
https://developer.android.com/studio/test/monkeyrunner
monkeyrunner脚本可以执行截图操作
具体执行步骤:
进入monkeyrunner.bat的文件夹
D:android_sdk oolsin
执行dos命令
monkeyrunner C:UsersuserDesktop estReportatDocmonkeyrunnerTest.py
遇到报错
SWT folder '..frameworkx86_64' does not exist. Please set ANDROID_SWT to point to the folder conta
解决办法: https://blog.csdn.net/qq_21650171/article/details/78986788
具体python脚本如下:
import sys from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice,MonkeyImage #parameter txt1_x=30 txt1_y=400 txt2_x=30 txt2_y=600 btn1_x=100 btn1_y=700 seconds=1 type='DOWN_AND_UP' txt1_msg='zhizhi' txt2_msg='yin' #package name and activity name package ='com.patech.testApp' activity='.AddressActivity' component=package+'/'+activity #connect device device=MonkeyRunner.waitForConnection() device.installPackage('C:\Users\user\Desktop\testReport\batDoc\app-debug.apk') print ('Installing apk') device.startActivity(component) print('launching apk') MonkeyRunner.sleep(seconds) device.touch(txt1_x,txt1_y,type) device.type(txt1_msg) #device.press('KEYCODE_ENTER','DOWN_AND_UP') print ('input txt1') device.touch(txt2_x,txt2_y,type) device.type(txt2_msg) #device.press('KEYCODE_ENTER','DOWN_AND_UP') print ('input txt2') MonkeyRunner.sleep(seconds) device.touch(btn1_x,btn1_y,type) print('click button') #get the snapshot picture=device.takeSnapshot() picture.writeToFile('C:\Users\user\Desktop\testReport\batDoc\apkTest.png','png') print ("you've get a picture") device.press('KEYCODE_HOME','DOWN_AND_UP') print ('Back to home.')
执行一些系统操作:
import sys from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice,MonkeyImage #parameter device_id='8b4235be' device=MonkeyRunner.waitForConnection(1000,device_id) device.installPackage('C:\Users\user\Desktop\testReport\batDoc\app-debug.apk') #删除应用 device.remove('com.patech.testApp')
获取一些信息(在手机端执行的)
import android droid=android.Android() pkgs=droid.getRunningPackages() apps=droid.getLaunchableApplications() print(pkgs.result) print(apps.result)
在PC端展示一些提示窗口
import sys from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice,MonkeyImage #parameter message = 'please input qq' initialValue='350343754' title='zhizhi' okTitle='save' cancelTitle='cancel' QQ=MonkeyRunner.input(message,initialValue,title,okTitle,cancelTitle) MonkeyRunner.alert(QQ,title,okTitle)
截图到当前目录下
import os import sys from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice device=MonkeyRunner.waitForConnection() picture = device.takeSnapshot() path=os.path.abspath(__file__) print(path) path=os.path.dirname(os.path.abspath(__file__)) print(path) picture.writeToFile(path+'/snapshot.png','png')
获取手机的基本信息
from com.android.monkeyrunner import MonkeyRunner,MonkeyDevice device=MonkeyRunner.waitForConnection() display=device.getProperty('build.type') print(display) #getSystemProperty = adb shell getprop display=device.getSystemProperty('build.type') print(display)
图像比较,图像转换,获取像素点,唤醒手机等等省略。
最后提一下怎么获取monkeyrunner的帮助文档。
参考:https://www.jianshu.com/p/67e78ff87da1
在monkeyrunner.bat的同个文件夹下,新建help.py,内容如下,在android源码中有,但是我没下载,网上downlo的:
下载地址:http://androidxref.com/source/xref/sdk/monkeyrunner/scripts/
#!/usr/bin/env monkeyrunner # Copyright 2010, The Android Open Source Project # # Licensed under the Apache License, Version 2.0 (the "License"); # you may not use this file except in compliance with the License. # You may obtain a copy of the License at # # http://www.apache.org/licenses/LICENSE-2.0 # # Unless required by applicable law or agreed to in writing, software # distributed under the License is distributed on an "AS IS" BASIS, # WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. # See the License for the specific language governing permissions and # limitations under the License. from com.android.monkeyrunner import MonkeyRunner as mr import os import sys supported_formats = ['html', 'text', 'sdk-docs'] if len(sys.argv) != 3: print 'help.py: format output' sys.exit(1) (format, saveto_path) = sys.argv[1:] if not format.lower() in supported_formats: print 'format %s is not a supported format' % format sys.exit(2) output = mr.help(format=format) if not output: print 'Error generating help format' sys.exit(3) dirname = os.path.dirname(saveto_path) try: os.makedirs(dirname) except: print 'oops' pass # It already existed fp = open(saveto_path, 'w') fp.write(output) fp.close() sys.exit(0)
进入monkeyrunner.jar的目录,我的是D:android_sdk oolslib,解压monkeyrunner.jar,将解压后的D:android_sdk oolslib esourcescomandroidmonkeyrunner 目录下的三个.cs文件:html.cs,sdk-doc.cs,text.cs挪到D:android_sdk oolslibcomandroidmonkeyrunner 文件夹中。
然后执行monkeyrunner的命令:
monkeyrunner help.py html C:UsersuserDesktop estReportmonkeyrunner.html
文档就downlo到对应的地址了。
monkeyrunner的脚本录制功能
从网上下载playback.py和recorder.py,网址:http://androidxref.com/source/xref/sdk/monkeyrunner/scripts/
运行命令
monkeyrunner monkey_recorder.py
录制完成后保存脚本为.mr格式,执行语句如下:
monkeyrunner monkey_playback.py C:UsersuserDesktop estReportatDoc ecord.mr