monkeyrunner教程笔记Word文档下载推荐.docx
《monkeyrunner教程笔记Word文档下载推荐.docx》由会员分享,可在线阅读,更多相关《monkeyrunner教程笔记Word文档下载推荐.docx(18页珍藏版)》请在冰豆网上搜索。
fromcom.android.monkeyrunnerimport<
module>
运行monkeyrunner
命令语法为:
monkeyrunner-plugin<
plugin_jar>
<
program_filename>
program_options>
方式一:
在CMD命令窗口直接运行monkeyrunner
方式二:
使用Python编写测试代码文件,在CMD中执行monkeyrunnerFindyou.py运行
不论使用哪种方式,您都需要调用SDK目录的tools子目录下的monkeyrunner命令。
在运行monkeyrunner之前必须先运行相应的模拟器或连接真机,否则monkeyrunner无法连接到设备
运行模拟器有两种方法:
1、通过eclipse中执行模拟器2、在CMD中通过命令调用模拟器
这里介绍通过命令,在CMD中执行模拟器的方法
emulator-avdtest
上面命令中test是指模拟器的名称。
附:
问题:
CMD运行提示monkeyrunner不是内部或外部命令,也不是可运行的程序或批处理文件。
解决:
电脑环境变量未配置,将monkeyrunner所在目录配在环境变量里。
变量名:
Path
变量值:
D:
\android\android-sdk-windows\tools;
\android\android-sdk-windows\platform-tools
第一部分:
实例说明
实例一:
使用模拟器测试monkeyrunner
1.用Elipse打开andorid的模拟器或者在CMD中用andorid命令打开模拟器,如下:
命令:
C:
\Users\Administrator>
emulator-avdtest1(#test1是在模似器的上名称)
输入cmd命令后,模拟器就会起来(这个时候,如果一切正常的话,模拟器应该可以启动起来了。
运行monkeyrunner之前必须先运行相应的模拟器,不然monkeyrunner无法连接设备)
接着,我们打开另一个CMD窗口(前一个不要关),还是定位到tools目录,输入命令"
monkeyrunner"
,回车,将进入shell命令交互模式
monkeyrunner
好了,接下来就可以导入monkeyrunner所要使用的模块了。
当然是我们的"
From...import..."
直接在shell命令中输入:
fromcom.android.monkeyrunnerimportMonkeyRunner,MonkeyDevice回车
>
fromcom.android.monkeyrunnerimportMonkeyRunner,MonkeyDevice
OK,这步完成之后,我们就可以开始和模拟器“勾兑”了,
device=MonkeyRunner.waitForConnection()
没有报错的话,就代表和模拟器勾兑成功。
接下来,我们可以在里面装点东西了。
输入如下命令,并传入你的apk所在相对路径即可。
我这安装的是自己的apkhaitao,APK。
成功了会返回true。
如果没有返回true,一般都是语法错误或者你传入的相对路径有问题,仔细检查下就没问题了。
我自己的apk放在了E盘根目录下
device.installPackage(“E:
\Haitao.apk”)
接下来,我们就可以启动其中的任意activity了,只要传入package和activity名称即可。
命令如下:
device.startActivity(component="
com.example.android.apis/com.example.android.apis.Haitao"
)
相关指令:
查看包名,versioncode,versionName,和查看获取Activity下package和入口activity名称
win+R→cmd→命令:
aaptdumpbadginge:
\Haitao.apk
实例二:
连接真机测试monkeyrunner自动化测试
(P.S:
因为模拟器和真机的巨大差距,建议使用真机做Monkeyrunner自动化测试,如果没有真机,自行安装虚拟模拟器。
首先检查设备是否已连接
a、winr+R→cmd→C:
adbdevices
b、连接成功后,在CMD中输入adbshell
adbshell
进入到手机,连接成功
相关学习笔记
#引入程序所用的模块
fromcom.android.monkeyrunnerimportMonkeyRunner,MonkeyDevice,MonkeyImage
#引入程序所用的模块,使用别名
fromcom.android.monkeyrunnerimportMonkeyRunnerasmr
fromcom.android.monkeyrunnerimportMonkeyDeviceasmd
fromcom.android.monkeyrunnerimportMonkeyImageasmi
#如果给导入的模块起了别名,就必须使用别名,否则会出现错误。
#比如连接设备或模拟器,起了以上别名后,命令应该如下:
device=mr.waitForConnection()
#连接到设备或模拟器
#参数1:
超时时间,单位秒,浮点数。
默认是无限期地等待。
#参数2:
串deviceid,指定的设备名称。
默认为当前设备(手机优先,比如手机通过USB线连接到PC、其次为模拟器)。
#默认连接:
device=MonkeyRunner.waitForConnection()
#参数连接:
device=MonkeyRunner.waitForConnection(1.0,'
4df74b8XXXXXXX'
c、另开一个CMD,运行monkeyrunner
#导入模块(必须-第一步)
fromcom.android.monkeyrunnerimportMonkeyRunner,MonkeyDevice,MonkeyImage
#连接当前设备,并返回一个MonkeyDevice对象(必须-第二步);
device=MonkeyRunner.waitForConnection()
#安装Android包:
device.installPackage('
E:
\Haitao.apk'
#卸载包
device.removePackage('
com.shantao'
)(#包名)
#启动任意的Activity
使用aapt(apktool安装)获取Activity下package和入口activity名称使用cmd窗口下面,跳转到apktool下,输入aaptdumpbadgingE:
包名/启动Activity"
device.startActivity(component='
com.shantao/com.shantao.LaunchActivity'
(#在输入这窜指令之前,需要重新安装刚才安装的包,因为刚才有把它卸了,所以需要重新安装)
#截图;
获取设备的屏蔽缓冲区,产生了整个显示器的屏蔽捕获。
(截图)
命令
:
result=device.takeSnapshot()
返回一个MonkeyImage对象(点阵图包装),我们可以用以下命令将图保存到指定文夹里,比如:
在E盘下有一个shot文件夹,输入命令回车显示为true后可以在shot文件夹找到刚才截的图
result.writeToFile('
/shot/1.png'
'
png'
#暂停(时延秒)
暂停目前正在运行的程序指定的秒数
MonkeyRunner.sleep(5)
#滑动屏幕;
device.drag((180,180),(600,600),0.1,10)//开始,结束,持续时间,步骤
#device.drag(X,Y,D,S)
#X开始坐标
#Y结束坐标
#D拖动持续时间(以秒为单位),默认1.0秒
#S插值点时要采取的步骤。
默认值是10
#连续滑动屏幕;
foriinrange(1,4):
device.drag((180,180),(600,600),0.1,10)
#触击屏幕;
device.touch(408,66,"
DOWN_AND_UP"
#device.touch(x,y,触摸事件类型)
#x,y的单位为像素
#触摸事件类型,请见下文中Findyou对device.press描述
#打印
print"
insertlogin"
#字符串发送到键盘输入(登录输入)
#device.type('
字符串'
),例如:
device.type('
longshan'
Findyou'
123456'
#唤醒设备屏幕
#锁屏后,屏幕关闭,可以用下命令唤醒
device.wake()
#重起手机
device.reboot()
#按键(系统键)
#device.press(参数1:
键码,参数2:
触摸事件类型)
见android.view.KeyEvent
#参数2,如有TouchPressType()返回的类型-触摸事件类型,有三种。
#1、DOWN发送一个DOWN事件。
指定DOWN事件类型发送到设备,对应的按一个键或触摸屏幕上。
#2、UP发送一个UP事件。
指定UP事件类型发送到设备,对应释放一个键或从屏幕上抬起。
#3、DOWN_AND_UP发送一个DOWN事件,然后一个UP事件。
对应于输入键或点击屏幕。
以上三种事件做为press()参数或touch()参数
#按下HOME键
device.press('
KEYCODE_HOME'
MonkeyDevice.DOWN_AND_UP)
#按下BACK键
KEYCODE_BACK'
#按下下导航键
KEYCODE_DPAD_DOWN'
#按下上导航键
KEYCODE_DPAD_UP'
#按下OK键
KEYCODE_DPAD_CENTER'
KeyCode:
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
DOWN_AND_UP'
)
#回车键
device.press('
KEYCODE_ENTER'
#for循环
foriinrange(5,10):
print(i)
#循环截图命名
result=device.takeSnapshot()
result.writeToFile('
F:
/shot/'
+str(i)+'
.png'
#时间命名
t=time.strftime("
%Y-%m-%d-%X"
time.localtime())t=t.replace("
:
"
"
-"
+t+'
#if判断
if(device):
deviceisOK"
else:
print"
deviceis...Please...退出"
sys.exit
(1)
#定义函数
importsys,time,datetime,os
defwrite_result(casename):
time.localtime())
t=t.replace("
testfinish=casename+'
'
+'
testfinished!
'
new_path_filename=r'
\shot\TestResult.txt'
file_object=open(new_path_filename,'
a'
file_object.write(t)
file_object.write('
\n'
file_object.write(testfinish)
file_object.close()printtestfinish
#调用函数
write_result(casename)
综上,常用:
1.print"
2.device.type('
3.device.press('
4.device.touch(430,220,"
5.device.drag((300,670),(300,220),1,10)
6.result=device.takeSnapshot()
7.result.writeToFile('
8.MonkeyRunner.sleep(10)
9.device.wake()
总结:
第一步:
在cmd窗口下面输入monkeyrunner,进入monkeyrunner版本信息
第二步:
导入模板fromcom.android.monkeyrunnerimportMonkeyRunner,MonkeyDevice,MonkeyImage回车
第三步:
连接当前设备,并返回一个MonkeyDevice对象
第四步:
按下Home键device.press('
第五步:
后续操作(按照基本要素操作)
第二部分:
使用Monkeyrunner编辑脚本
除了cmd直接操作手机,也可以编辑好脚本后,运行脚本,一次操作多个脚本命令
a)新建py格式脚本,如record_test.py
b)编辑脚本
#导入模块
fromcom.android.monkeyrunnerimportMonkeyRunner,MonkeyDevice,MonkeyImage
MonkeyRunner.sleep
(1)
#连接设备
device.wake()
#滑动解销
device.drag((360,1008),(616,1016),0.1,10)
MonkeyRunner.sleep
(2)
#点击Home键
#导入安装包并安装
E"
#启动程序
device.startActivity(component='
component='
#登录输入
device.type('
c)运行脚本,在cmd窗口下,输入monkeyrunnerD:
\
record_test.py,基本即可运行,脚本运转速度比较快,中间穿插时延比较好
第三部分:
使用Monkeyrunner录制脚本
Monkeyrunner除了编写脚本,也可以录制脚本,再运行,录制的脚本主要基于坐标点,无法测试安装和卸载。
常用功能:
点击,滑动,时延,点击按键:
HomeMENUSearch,
输入主界面:
具体操作步骤如下:
a)新建py格式脚本:
recorder.py
b)在脚本中编写内容如下:
fromcom.android.monkeyrunnerimportMonkeyRunnerasmrfromcom.android.monkeyrunner.recorderimportMonkeyRecorderasrecorderdevice=mr.waitForConnection()recorder.start(device)
c)保存recorder.py后,在cmd窗口下,运行monkeyrunnerD:
\recorder.py,也可以在cmd下,先monkeyrunner再输入上面脚本,启动录制
d)录制脚本:
walt时延(s),pressaButton按下指定系统3个按键中一个,TypeSomething输入文本,Fling滑动RefreshDisplay刷新屏幕(用于断开连接后)
e)录制完成脚本后,点击:
exportAction导出录制的脚本保存,选择保存位置,和脚本名:
如:
record_test.py
f)新建py格式脚本:
recorder_playback.py
g)编辑recorder_playback.py脚本,内容如下:
h)在cmd窗口下,运行:
MonkeyrunnerD:
\recorder_playback.pyD:
\recorder_test.py脚本即可运行,真机安装脚本步骤运行
注:
Monkeyrunner,在运行了录制窗口后,如果device连接不上,需要重启手机和电脑附:
recorder_playback.pyrecorder_test.pyrecorder.py文件MonR-P-1.py基于坐标,MonR-P-2.py基于坐标:
添加判断、函数、循环、截图。
。
备注:
Monkeyrunner运用方便,但是移植性太弱,需要坐标支持,所以Monkeyrunner可以用基于ID控件的方式编写脚本,但是ID得获得和对手机服务要求高附:
MonR-P-3.py基于ID