2018年10月28日 星期日

14-繞遠路雖愚蠢但有用 (screencap)

screencap 是 Android shell 提供來擷取目前螢幕畫面的工具程式,本喵只使用過以下語法:
語法 說明
screencap -p [FILENAME] [FILENAME],截圖儲存在 Android 裝置上的檔案路徑,格式為 png。

什麼時候會需要以 screencap 來取代 MonkeyDevice.takeSnapshot() 呢?本喵遇過的情境如下:

2018年10月27日 星期六

13-最終兵器MonkeyDevice.shell

Shell,可以說是由裝置外部操控裝置的最後也是最強的一種工具,但這並不意味著 monkeyrunner 提供的功能僅僅是 shell 的包裝,甚或雞肋,他們的關係更像是互補。monkeyrunner 不能做到的事由 shell 來完成;而 shell 不能達成的工作,則由 monkeyrunner 來補足,縱使兩者都具備的功能,其表現也不盡相同。因此何時使用 shell 或 monkeyrunner,端視裝置的能力與看官希望達成的效果而定。

2018年10月22日 星期一

12-心中那一瞬的美麗 (MonkeyImage.writeToFile)

咱們已經知道如何載入圖片檔了,那依照想當然耳的對稱性會認為應該存在一個儲存圖片的方法才是,MonkeyImage.writeToFile (string path, string format) 就是用來將 MonkeyImage 表示的畫面儲存成圖像檔的方法。

2018年10月19日 星期五

11-九又四分之三的回憶 (MonkeyRunner.loadImageFromFile)

咱們已經知道如何擷取螢幕的畫面,也了解怎麼切割與比較它,但看官們一定滿肚子疑惑:「我才不在乎螢幕畫面有沒變化呢!我想知道的是目前畫面是不是我想要的阿!」

是的!只靠先前章節介紹的方法根本無法得知目前 app 運行的進展,咱們需要的是一個可以載入預期畫面的方法,好拿它與目前畫面做比較。但非常令人意外的是,Google monkeyrunner 的官方介紹中卻看不到任何與載入圖片相關的說明?!

2018年10月18日 星期四

10-失去你擁有世界又如何 (MonkeyImage.getSubImage)

通常檢查裝置是否在預期的情境時並不會去比較整個螢幕畫面,因為咱們只在意畫面上最關鍵的部分——可以代表預期影格的最有力的特徵,這主要是為避免誤判,另一方面也是為了加速畫面的比較。雖然 MonkeyImage.sameAs() 無法指定比較的範圍,但咱們可以從 MonkeyImage 物件提取出適當的畫面後再以 MonkeyImage.sameAs() 進行比較,這便是 MonkeyImage.getSubImage (tuple rect) 的作用。

2018年10月14日 星期日

2018年10月10日 星期三

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

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

2018年10月8日 星期一

07-迷霧中的MonkeyDevice.drag

對於手機、平板等手持裝置來說,「滑動」這個動作是必不可少的,因此可以模擬滑動效果的 MonkeyDevice.drag (tuple start, tuple end, float duration, integer steps) 是非常重要的功能,但他的參數與實際表現的落差有時卻讓人迷惑。

2018年10月3日 星期三

05-按下那個按鍵!猴子!(MonkeyDevice.press)

終於,咱們可以開始學習對 Android 裝置下達第一道命令了~按下一個實體按鍵: MonkeyDevice.press (string name, integer type)

所謂的實體按鍵就是諸如電源鍵或聲音鍵這種可以實際觸摸到的硬體,而不是由電腦繪製的 icon 類型的按鈕。以前的 Android 手機上還有 Home key 這種按鍵,但現在也常是以 icon 的形式被表現於手機上了。但即使如此,通常還是可以利用 MonkeyDevice.press() 送出一個模擬 Home key 被按下的訊息給沒有 Home key 的手機,讓其表現按下 Home key 時應有的行為。

2018年10月1日 星期一