1. 程式人生 > >在Macbook上配置使用Android自動化測試工具uiautomator

在Macbook上配置使用Android自動化測試工具uiautomator

昨天我嘗試在Macbook上配置環境來執行uiautomator,之中遇到一些問題但都一一解決了,在這裡做個筆記。

首先當然是在Mac上配置Eclipse和Android SDK,具體可以見我之前的一篇博文 -Mac下配置Eclipse + Android SDK的幾個問題,安裝完畢後,我的Android SDK路徑是/Applications/adt-bundle-mac-x86_64-20140702/sdk,這個路徑後面用到較多。

配置adb命令以方便使用

如果是預設配置的話,在Mac的終端裡輸入adb,會有-bash: abd: command not found的提示。首先要找到adb所在目錄,也即/Applications/adt-bundle-mac-x86_64-20140702/sdk/platform-tools/

,開啟終端執行下面命令:

  1. cd ~
  2. touch .bash_profile
  3. open -e .bash_profile

最後個命令會開啟一個文字檔案進入編輯狀態,在其中新增export PATH=${PATH}:/Applications/adt-bundle-mac-x86_64-20140702/sdk/platform-tools/,儲存並重啟終端,再在任意當前目錄下輸入adb即可使用了。

安裝並配置ant

在Eclipse新建專案編寫uiautomator的用例程式碼

用Android官網下載下來的adt捆綁包(adt-bundle-mac-...)裡自帶的Eclipse新建一個Java專案,記得新增Libraries庫,這裡需要新增android.jar和uiautomator.jar,都可以導航至應用程式目錄下的SDK目錄->platforms->android21目錄,這裡也可以選其他的4.0+版本的android,同時需要新增Junit,我新增的是自帶的Junit4。可以新建一個TestRunner類,繼承

UiAutomatorTestCase類,這裡有段簡單的程式碼:

package com.uiauto.test;

import com.android.uiautomator.core.UiObject;
import com.android.uiautomator.core.UiObjectNotFoundException;
import com.android.uiautomator.core.UiSelector;
import com.android.uiautomator.testrunner.UiAutomatorTestCase;

public class TestRunner extends UiAutomatorTestCase {

    public void testDemo() throws UiObjectNotFoundException {

        System.out.println("## Press home key");
        getUiDevice().pressHome();

        UiSelector query1 = new UiSelector().description("Settings");

        System.out.println("## Get UiObject settingsApp by \"Settings\"");
        if (new UiObject(query1).exists()) {
            System.out.println("Settings is found.");
        } else {
            System.out.println("Settings is NOT found.");
        }
    }
}

uiautomator可以使用UiSelector來定位介面上的各個控制元件,使用起來比較靈活,可以使用uiautomatorviewer來輔助查詢各種控制元件資訊,具體在SDK裡的tools目錄裡。程式碼編寫完成後,開啟終端執行android create uitest-project -n uiauto-test01 -t 3 -p /Users/reed/Documents/android-dev/workspace/my-uiauto-project,注意這裡的-t 3是當前使用的版本的Android SDK的程式碼,可以用android list查詢,可以理解為把程式碼執行在哪個版本的Android上。

再終端裡cd到專案目錄->bin目錄,執行ant build成功後,再開啟模擬器,注意模擬器的android版本與剛剛-t 3保持一致。再分別執行

  1. adb push my-uiauto-project.jar /data/local/tmp 將jar包push到手機裡
  2. adb shell uiautomator runtest my-uiauto-project.jar -c com.uiauto.test.TestRunner 執行測試