1. #导入模块;
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice, MonkeyImage
还可起别名:
from com.android.monkeyrunner import MonkeyRunner as mr
from com.android.monkeyrunner import MonkeyDevice as md
from com.android.monkeyrunner import MonkeyImage as mi
2. #连接当前设备,并返回一个MonkeyDevice对象;
device = MonkeyRunner.waitForConnection(float timeout, string deviceID) // 第一个参数为等待连接设备时间,第二个参数为具体连接的设备
3. #安装Android包,注意,此方法返回的返回值为boolean,由此可以判断安装过程是否正常 ;
device.installPackage('myproject/bin/MyApplication.apk')
print ('True')
device.removePackage ('com.example.android.notepad')
print ('False')
4. #启动一个Activity;
device.startActivity(component='com.android.htccontacts/com.android.htccontacts.ContactsTabActivity')
5. #截图;
result = device.takeSnapshot()
result.writeToFile('C:\\Users\\Martin\\Desktop\\test.png','png')
6. #延时(秒);
MonkeyRunner.sleep(3)
7. #滑动屏幕;
for i in range(1,70):
device.drag((250,850),(250,110),0.1,10) //开始,结束,持续时间,步骤
for i in range(1,70):device.drag((250,110),(250,850),0.1,10)
MonkeyRunner.sleep(1)
8. #触击屏幕;
device.touch(507,72,"DOWN_AND_UP")
9. #执行adb shell命令;
device.shell("input text goup01")
10. #按键按下HOME键 device.press('KEYCODE_HOME','DOWN_AND_UP')
相应的按键对应的名称如下:
menu键:KEYCODE_MENU
back键:KEYCODE_BACK
search键:KEYCODE_SEARCH
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
11. #输入a s d
device.type('asd')
12. #输入回车
device.press('KEYCODE_ENTER')
13. #记录和回放
*记录:
直接在命令行中输入:monkeyrunner monkey_recorder.py
在界面上操作然后将脚本保存为 monkey_test.mr
*回放:
运行保存的脚本,然后你就看到模拟器进行你刚才一样的操作:
monkeyrunner monkey_playback.py monkey_test.mr
注:monkey_recorder.py,monkey_test.mr,monkey_playback.py都应放在..\android-sdk-windows\tools目录下。
14. #产生help文件并保存
monkeyrunner help.py <format> <outfile> //format可以是text或html,outfile是包含路径的输出文件名。
15.图片对比sameAs
imageB=device.takeSnapshot();
imageB.writeToFile('./imageB.png','png');
flag = imageB.sameAs(imageA,0.5)
经过试验此函数在win7;tools工具16以上的版本好用;受JAVA库的音响容易出问题
v1:isSame=imgOld.sameAs(imgNew,0.9)
at com.android.monkeyruner.MonkeyImage.sameAs(MonkeyImage.java:138)
at sun.reflect.NativeMethodAccessorImpl
java.lang.ClassCastException:java.lang.ClassCastException:org.python.core.PySigleton cannot be cast to com.android.monkeyrunner.core.IMonkeyImage
字面上是类转换异常,而这两个类一个是python标准包中的类PySigleton,一个是android的类IMonkeyImage,我们在什么地方调用过它们,就是MokneyImage.sameAs()这个方法,但是这个方法不是由我们实现的。所以,这个问题可以大胆的肯定是归结于系统的库(jar包)的问题。
这个库在哪儿呢,就在<SDK>/tools/lib下面的jython.jar和monkeyrunner.jar。
可以查看一下自己的tools版本,如果是12的话,就可能出现这个问题。
解决方法:升级tools包到15以上,当然如果用到eclipse的话,也需要升级ADT。
v2:有童鞋使用MonkeyImage的sameAs方法老是出错,我自己试了试,确实要出错,错误提示是:不能将IChimpImage对象转 换为IMonkeyImage对象时要出错。再次查看源码,MonkeyImage.java中的sameAs函数有这么一个注释:// TODO: check if thisconversion works
IChimpImage ther = (IChimpImage) otherObject.__tojava__(IChimpImage.class);看来明显google的工程师还没有验证过这个转换的正确性,并且很杯具地失败了。哎,真是天意弄人。幸好,有万能的python在,我们还是有办法滴。建议大家使用python的PIL库进行图片比较,一样可以达到非常好的效果并且要稳定很多。
16.ImageCompare()图片对比
imageB=device.takeSnapshot();
imageB.writeToFile('./imageB.png','png');
if True == ImageCompare("480x800.png","imageB.png",20,120,240,165):
这个在XP上适合较低版本的tools工具;在win7较高版本容易出问题;