咱們已經知道如何擷取螢幕的畫面,也了解怎麼切割與比較它,但看官們一定滿肚子疑惑:「我才不在乎螢幕畫面有沒變化呢!我想知道的是目前畫面是不是我想要的阿!」
是的!只靠先前章節介紹的方法根本無法得知目前 app 運行的進展,咱們需要的是一個可以載入預期畫面的方法,好拿它與目前畫面做比較。但非常令人意外的是,Google monkeyrunner 的官方介紹中卻看不到任何與載入圖片相關的說明?!
是的!只靠先前章節介紹的方法根本無法得知目前 app 運行的進展,咱們需要的是一個可以載入預期畫面的方法,好拿它與目前畫面做比較。但非常令人意外的是,Google monkeyrunner 的官方介紹中卻看不到任何與載入圖片相關的說明?!
其實 monkeyrunner 是有能做到這種功能的方法存在的,只是不知為何,Google 沒有將其介紹記載於其說明網頁上,必須讓開發者自行查閱 monkeyrunner 的原始碼才能一窺究竟(Android 的很多 API 都有這樣的情況,不知是出於安全考量、或是不鼓勵使用、亦或是他們認為身為開發者就是要自行去研究原始碼...),這方法便是 MonkeyRunner.loadImageFromFile (path)。
參數:
path | 表示圖片檔案的完整路徑。 |
---|
# 匯入所需模組
from com.android.monkeyrunner import MonkeyDevice, MonkeyImage, MonkeyRunner
# 連接 Android 裝置
device = MonkeyRunner.waitForConnection()
# 載入比對用的圖片
img_golden_sample = MonkeyRunner.loadImageFromFile(r'C:\golden_sample_20_30_10_40.png')
# 取得目前整個畫面
img_full_current = device.takeSnapshot()
# 取得目前畫面的 (20, 30) 到 (20 + 10 - 1, 30 + 40 - 1) 即 (29, 69) 的範圍
img_sub_current = img_full_current.getSubImage((20, 30, 10, 40))
# 比對現在畫面和預期畫面
is_same = img_sub_current.sameAs(img_golden_sample, 1.0)
# 如果是預期的畫面
if is_same:
# 執行相關測試動作
沒有留言:
張貼留言