MonkeyRunner Command Summary

MonkeyRunner Command Summary

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

home键:KEYCODE_HOME

back键:KEYCODE_BACK

search键:KEYCODE_SEARCH

call键: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

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.invoke0(Native Method)

  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较高版本容易出问题;

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值