Appium學習12:monkeyrunner API

MonkeyRunner API

MonkeyRunner工具主要有三個類:

1.    MonkeyRunner

2.    MonkeyDevice

3.    MonkeyImage

官方API文檔 :http://www.android-doc.com/tools/help/monkeyrunner_concepts.html#

1.MonkeyRunner類:

MonkeyRunner提供連接真機和模擬器、輸入、暫停、警告框等方法。

常用方法
waitForConnection(float timeout,string deviceid),

from com.android.monkeyrunner import MonkeyRunner as mr
print("connect devices...")

device=mr.waitForConnection()
# device=mr.waitForConnection(5,'127.0.0.1:62001')


2.MonkeyDevice類

MonkeyDevice類提供了安裝和卸載程序包、開啓Activity、發送按鍵和點擊事件、運行測試包等方法。
 
常用方法
•    installPackage (string path)
•    removePackage (string package)
•    startActivity (string uri, string action, string data, string mimetype, iterable categories dictionary extras, component component, flags)
•    touch (integer x, integer y, integer type)

touch參數說明
integer x,x座標值。
integer y,y座標值。
integer type,key event類型(如DOWN、UP、DOWN_AND_UP)。
DOWN爲按下事件 UP爲彈起事件 DOWN_AND_UP爲按下彈起事件。
•    drag (tuple start, tuple end, float duration, integer steps)

drag參數詳細說明如下:
tuple start,拖拽起始位置,爲tuple類型的(x,y)座標點。
tuple end,拖拽終點位置,爲tuple類型的(x,y)座標點。
float duration,拖拽手勢持續時間,默認爲1.0s。
-integer steps,插值點的步數,默認值爲10。

實踐案例:
連接設備,安裝考研幫App並啓動
 

代碼實現
kyb_start.py

from com.android.monkeyrunner import MonkeyRunner as mr
from com.android.monkeyrunner import MonkeyDevice as md


print("connect devices...")
device=mr.waitForConnection()

print("install app...")
device.installPackage(r'C:\Users\Shuqing\Desktop\kaoyan3.1.0.apk')

package = 'com.tal.kaoyan'
activity = 'com.tal.kaoyan.ui.activity.SplashActivity'
runComponent = package + '/' + activity

print("launch App...")
device.startActivity(component=runComponent)


代碼執行方式

monkeyrunner scripfile

C:\Users\Shuqing>monkeyrunner E:\monkeyrunner_script\kyb.py


3.MonkeyImage類

MonkeyImage類在測試過程中用來保存各種格式的測試截圖,並可以進行圖像對比。
 
常用方法
•    takeSnapshot() 進行屏幕截圖
•    writeToFile() 保存圖像文件到指定的文件路徑

用法示例
 

from com.android.monkeyrunner import MonkeyImage as mi  
print("takeSnapshot")
screenshot=device.takeSnapshot()  
screenshot.writeToFile(r'E:\monkeyrunner_script\test.png','png')  


綜合實踐

測試場景

•    連接設備,自動安裝並啓動考研幫app
•    啓動後登錄賬號(賬號zxw1234 密碼:zxw123456),然後截圖並保存到指定文件位置。

思路分析

•    連接設備
•    安裝app
•    啓動app
•    輸入用戶名密碼點擊登錄按鈕
•    截圖
 

腳本實現

kyb_login.py

from com.android.monkeyrunner import MonkeyRunner as mr
from com.android.monkeyrunner import MonkeyDevice as md
from com.android.monkeyrunner import MonkeyImage as mi

print("connect devices...")

device=mr.waitForConnection()

print(" install app")
device.installPackage(r'C:\Users\Shuqing\Desktop\kaoyan3.1.0.apk')

print("launch app...")
package='com.tal.kaoyan'
activity='com.tal.kaoyan.ui.activity.SplashActivity'
runComponent=package+'/'+activity

device.startActivity(component=runComponent)
mr.sleep(3)


print("touch cancel button")
device.touch(618,895,'DOWN_AND_UP')
mr.sleep(1)


print("touch skip button")
device.touch(804,67,'DOWN_AND_UP')
mr.sleep(1)

print("input username and password")
device.touch(57,373,'DOWN_AND_UP')
mr.sleep(2)
device.type('zxw1234')

device.touch(152,480,'DOWN_AND_UP')
mr.sleep(2)
device.type('zxw123456')
mr.sleep(2)

print("touch login button")
device.touch(331,634,'DOWN_AND_UP')


print("takeSnapshot")
screenshot=device.takeSnapshot()
screenshot.writeToFile(r'D:\monkeyrunner\kyb.png','png')

注意事項
方法調用錯誤

AttributeError: type object 'com.android.monkeyrunner.XXXXX' has no attribute XXXXXX

檢查調用的方法名是否寫錯,特別是注意區分大小寫。
字符編碼錯誤

SyntaxError: Non-ASCII character in file 'E:\monkeyrunner_script\kyb.py', but no encoding declared;

需要在代碼頂部補充 # -- coding: utf-8 -- 或者去掉代碼中的中文字符

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