monkeyrunner脚本的录制和回放
參考:http://www.cnblogs.com/android-host/p/5378996.html
需要條件:
1.android-sdk
2.monkey_recorder.py
3.monkey_playback.py
操作步驟:
1)新建monkey_recorder.py文件,復制以下代碼:
#!/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 from com.android.monkeyrunner.recorder import MonkeyRecorder as recorder device = mr.waitForConnection() recorder.start(device)?2)新建monkey_playback.py,復制以下代碼:
#!/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.import sys from com.android.monkeyrunner import MonkeyRunner# The format of the file we are parsing is very carfeully constructed. # Each line corresponds to a single command. The line is split into 2 # parts with a | character. Text to the left of the pipe denotes # which command to run. The text to the right of the pipe is a python # dictionary (it can be evaled into existence) that specifies the # arguments for the command. In most cases, this directly maps to the # keyword argument dictionary that could be passed to the underlying # command. # Lookup table to map command strings to functions that implement that # command. CMD_MAP = {'TOUCH': lambda dev, arg: dev.touch(**arg),'DRAG': lambda dev, arg: dev.drag(**arg),'PRESS': lambda dev, arg: dev.press(**arg),'TYPE': lambda dev, arg: dev.type(**arg),'WAIT': lambda dev, arg: MonkeyRunner.sleep(**arg)}# Process a single file for the specified device. def process_file(fp, device):for line in fp:(cmd, rest) = line.split('|')try:# Parse the pydictrest = eval(rest)except:print 'unable to parse options'continueif cmd not in CMD_MAP:print 'unknown command: ' + cmdcontinueCMD_MAP[cmd](device, rest)def main():file = sys.argv[1]fp = open(file, 'r')device = MonkeyRunner.waitForConnection()process_file(fp, device)fp.close();if __name__ == '__main__':main()?備注:以上代碼經測試可用,但是在其他地方找的該代碼報main錯誤,還未知原因(例如:http://www.cnblogs.com/dzblog/p/4027002.html)
3).將這兩個文件放入android-sdk——tools目錄下
4).連接設備和PC,輸入命令,先進入tools目錄下,然后輸入
sh monkeyrunner monkey_recorder.py?? 會彈出一個MonkeyRecord窗口界面該窗口的功能(參考:http://www.cnblogs.com/longronglang/p/6359862.html):
注意:如果錄制時候,點擊,發(fā)現(xiàn)設備和窗口不同步,ctrl+c,輸入y,再次輸入錄制命令(黑屏不好使)
?
說明:
- 1、可以自動顯示手機當前的界面
- 2、自動刷新手機的最新狀態(tài)
- 3、點擊手機界面即可對手機進行操作,同時會反應到真機,而且會在右側插入操作腳本
- 4:、wait: 用來插入下一次操作的時間間隔,點擊后即可設置時間,單位是秒
Press a Button:用來確定需要點擊的按鈕,包括menu、home、search,以及對按鈕的press、down、up屬性
Type Something:用來輸入內容到輸入框
Fling:用來進行拖動操作,可以向上、下、左、右,以及操作的范圍
Export Actions:用來導出腳本,不需要后綴名,也可以添加后綴名.mr
Refresh Display:用來刷新手機界面,估計只有在斷開手機后,重新連接時才會用到
?
例如導出的腳本為apsam.最好也保存在tools目錄下
5).關閉命令窗口,重新打開
??? 先進入tools目錄,再輸入
?? sh monkeyrunner monkey_playback.py apsam
6).OK
?
轉載于:https://www.cnblogs.com/boot/p/6860389.html
總結
以上是生活随笔為你收集整理的monkeyrunner脚本的录制和回放的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: BZOJ 1083: [SCOI2005
- 下一篇: java中 将字符串时间 '2015-