在 Android 自動化測試時,利用 Recordable App 錄製測試的操作過程

之前這篇「 在 Android 4.4 自動化測試時,錄製測試的操作過程」,有討論過在 Android 4.4 平台中會使用 adb 的 screenrecord 指令來執行錄影的動作,但這指令我們只能執行於 Android 4.4 平台中。

在非 4.4 的平台我嘗試透過了 Mobizen 與 Recordable 這些兩套 App 來做錄影的動作,執行上這兩套都可以正常的錄製,但使用 Mobizen 錄製時可以稍微感覺到錄製時手機會變得稍微 lag 一些 (測試平台: Samsung Galaxy S3 – Android 4.1.2, Mobizen Ver. 2.7.1.4),所以 Mobizen 就先不考慮使用它,而選擇使用 Recordable 軟體。

Recordable 安裝與使用教學可以參考這篇文章,它要執行錄製的動作非常簡單,只要開啟 App 後點選右上角錄製按鈕後,接著再按下 Home 鍵就可以開始錄影,如下圖所示:

70

結束錄影只要再開啟 Recordable App 就可以結束錄影。

目前已經可以知道如何透過 Recordable App 怎麼操作,那我們就要把的些操作轉換成程式碼來執行。

在「如何透過 adb command line 指令啟動 Android App」這篇文章有討論過整麼透過 adb 開啟 App,如果我們要開啟 Recordable App 則執行以下指令就可以開啟 Recordable:

adb shell am start -n uk.org.invisibility.recordablefree/uk.org.invisibility.recordable.MainActivity

接著我們就可以很簡單的完成開始錄影的程式 startRecording() 函式與結束錄影 stopRecording() 函式,程式碼如下所示:

// 開始錄影
public void startRecording() throws InterruptedException, IOException, UiObjectNotFoundException {
   Runtime.getRuntime().exec("am start -n uk.org.invisibility.recordablefree/uk.org.invisibility.recordable.MainActivity").waitFor(); 

   UiObject recordButton = new UiObject(new UiSelector().description("Record"));
   recordButton.click();
   getUiDevice().pressHome(); // 按下 Home 鍵
   sleep(5000); // 等待 5 秒倒數計時提示後開始錄影
}

// 結束錄影
public void stopRecording() throws InterruptedException, IOException {
   Runtime.getRuntime().exec("am start -n uk.org.invisibility.recordablefree/uk.org.invisibility.recordable.MainActivity").waitFor();
}

我們就可以簡單透過這兩個函式幫我們執行錄影的動作,把我們自動化的執行過程錄製下來。之後需要確認錄影內容時,只要根據錄影時間,就可以從錄影列表中找出我們需要的錄影檔,幫助我們做 debug。

廣告

發表迴響

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