2018年10月10日 星期三

08-為你擷取全世界 (MonkeyDevice.takeSnapshot)

咱們已經學會三種操控手持式裝置的方法:press、touch 和 drag,有了這些動作,已經可以設計些簡單的腳本來操控 app,但除非要執行的動作不需任何判斷(比如狂點螢幕上某些固定地方),否則讓腳本可以根據目前資訊來判斷該做什麼事才是較常見的需求。那什麼是目前資訊呢?以使用者的角度來切入,不外乎就是螢幕目前的畫面,當然,螢幕畫面所能表達的訊息有時也可以藉由向裝置發送命令去獲得,但除非 app 開發商有留下此種資訊能讓外界讀取,否則依然只能藉由畫面本身來判斷。

MonkeyDevice.takeSnapshot () 是 monkeyrunner 提供的擷取整個螢幕畫面的方法,它不需要任何參數,只要如下使用即可:
# 匯入所需模組
from com.android.monkeyrunner import MonkeyDevice, MonkeyImage, MonkeyRunner

# 連接 Android 裝置
device = MonkeyRunner.waitForConnection()

# 獲取整個螢幕畫面
img = device.takeSnapshot()
takeSnapshot() 會回傳一個擷取到的畫面的 MonkeyImage 物件,之後咱們可以對這個物件加工處理。

另外,擷取畫面所需時間是基於電腦和 Android 裝置的效能而定,亦即也許 0.5 秒就能得到,也或許需要 2 秒才能完成,而且是否會產生 exception 亦是。因此,若連續截圖判斷或與 touch 等動作一起偕同運作時遇到 exception,就讓它們之間 sleep 一下吧,或是換個好點的電腦喔~~

沒有留言:

張貼留言