MonkeyImage.sameAs (MonkeyImage otherImage, float percent) 是 monkeyrunner 所提供用來比較兩幅畫面是否相同的唯一方法,他的要求是畫面的維度必須一致,否則即認定比對失敗。
參數:
otherImage | 一個用來比對的 MonkeyImage 物件。 |
---|---|
percent | 一個介於 0.0 到 1.0 表示相似度的數值,預設值為 1.0,表示兩幅畫面的像素必須全一致。 |
咱們先解釋一下 MonkeyImage.sameAs() 是怎麼計算兩幅畫面的相似度。
比如兩幅畫面的維度都是 10 x 10,MonkeyImage.sameAs() 會依序檢查每個像素是否相等,若現有 10 個像素不相等,那其相似度便是:
所以若看官指定的 percent 大於 0.9,那這兩幅畫面便會被認為是不一樣的。
比如兩幅畫面的維度都是 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% 的像素發生變化,便會被認為螢幕畫面已經改變,咱們就可進行相關的測試動作。
沒有留言:
張貼留言