2018年10月14日 星期日

09-大家來找碴 (MonkeyImage.sameAs)

MonkeyImage.sameAs (MonkeyImage otherImage, float percent) 是 monkeyrunner 所提供用來比較兩幅畫面是否相同的唯一方法,他的要求是畫面的維度必須一致,否則即認定比對失敗。

參數:
otherImage 一個用來比對的 MonkeyImage 物件。
percent 一個介於 0.0 到 1.0 表示相似度的數值,預設值為 1.0,表示兩幅畫面的像素必須全一致。

咱們先解釋一下 MonkeyImage.sameAs() 是怎麼計算兩幅畫面的相似度。
比如兩幅畫面的維度都是 10 x 10,MonkeyImage.sameAs() 會依序檢查每個像素是否相等,若現有 10 個像素不相等,那其相似度便是:

1.0 - [ 10 / (10 x 10) ] = 1.0 - 0.1 = 0.9

所以若看官指定的 percent 大於 0.9,那這兩幅畫面便會被認為是不一樣的。

咱們來看一個例子:
# 匯入所需模組
from com.android.monkeyrunner import MonkeyDevice, MonkeyImage, MonkeyRunner

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

# 比對現在畫面和 5 秒前的畫面
img_previous = device.takeSnapshot()
MonkeyRunner.sleep(5)
img_current = device.takeSnapshot()
is_same = img_current.sameAs(img_previous, 0.8)

# 如果畫面已經改變
if not is_same:
    # 執行相關測試動作
如此,只要 img_current 和 img_previous 有超過 20% 的像素發生變化,便會被認為螢幕畫面已經改變,咱們就可進行相關的測試動作。

沒有留言:

張貼留言