使用 Uiautomator 做自動化測試時,使用 longClick() 會不小心變成 click()?

我們在寫 Android 自動化測試時,曾碰到過想要長按某一個按鈕,讓它跳出 long click 後會正確地做應該做的事情,但是有的時候因為 Android 裝置效能的問題、或有可能是待測程式有問題,導致我們做 long click 的動作,卻被裝置判斷成 click,最後讓 test case 執行不正確,就 fail 了。

這對自動化來說是件蠻困擾的事情,常常因為這樣造成誤判,會讓我們對自動化測試的結果失去信心,因此就問了網路,看看有沒有人遇到相同的問題,有沒有好的解法,很幸運的有找到一篇解決辦法,主要解決辦法就是自己額外寫一個 function 取代 uiautomator 自己的 longClick()。

要如何對一塊區域做 long click 的動作呢?文章內提供的作法是:先取得要做 long click 的座標 A,之後使用 UiDevice 的 swipe 給他起始座標、結束座標與做 swipe 的時間長短,當然起始座標與結束座標皆設為座標 A,這樣就是在這段時間內,從座標 A 拖移到座標 A,模擬長按一個點的感覺。

知道了作法後,針對我們自己需要 longClick() 的地方,都改成對這個定點做一定時間的 swipe 動作,之後就沒有再發生明明是做 longClick() 的動作,裝置卻誤以為是 click() 的情況了,這讓我們的測試少了不少誤判的情況,讓測試結果更加的可信。

 

參考文章:

網路提供的作法

Uiautomator 內建的 longClick() 介紹

Uiautomator 內建的 swipe() 介紹

 

廣告

發表迴響

Please log in using one of these methods to post your comment:

WordPress.com Logo

您的留言將使用 WordPress.com 帳號。 登出 / 變更 )

Twitter picture

您的留言將使用 Twitter 帳號。 登出 / 變更 )

Facebook照片

您的留言將使用 Facebook 帳號。 登出 / 變更 )

Google+ photo

您的留言將使用 Google+ 帳號。 登出 / 變更 )

連結到 %s