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較高版本容易出問題;

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章