Android uiautomator執行個體使用

來源:互聯網
上載者:User

標籤:

轉載自:http://blog.csdn.net/huiguixian/article/details/22398193

Android測試載入器中,Monkey Runner只要簡單幾個指令即可,但他的局限性在雩都是基於像素位置操作,不具備移植性

而採用uiautomator編寫的自動化測試載入器則可以實現基於UiSelector選擇直接操作uiObject來編寫基於屬性操作具備移植性的測試

註:

android官方給出的版本條件如下,若低於這些版本請先下載新版本

Android SDK Tools, Revision 21 or higher
Android SDK Platform, API 16 or higher


1. 首先我們先瞭解一下屬性操作,並用uiautomatorviewer來分析一下應用UI組件。

工具路徑:<android-sdk>/tools/.

左邊為當前截屏,移動到上面有個紅色的懸浮框表示當前選中節點,當前選中的會在右上方藍色高亮,右下角顯示即是此view的屬性。

至於這些有什麼作用,稍後我們再看(請注意content-desc屬性,我們稍後會用)。


2. 開啟eclipse,建立立一個Java Project,我這裡建立的是MessageTestCase

2.1 之後右鍵項目Property->Java Build Path->Libraries->Add Library->JUnit->JUnit3->Finish

2.2 回到Property介面後還是選擇Libraries->Add External JARs->選擇Android SDK路徑\platforms\android-**->選中Android.java和uiautomator.jar

2.3 之後點擊ok,關閉Property視窗


3. 之後我們編輯code完成操作,主要操作是進入簡訊介面,編輯一條hello world

[java] view plaincopyprint?
  1. //所有UI自動化的測試都要繼承UiAutomatorTestCase  
  2. public class MessageTestCase extends UiAutomatorTestCase {  
  3.     public void testDemo() throws UiObjectNotFoundException{  
  4.         //擷取UiDevice對象  
  5.         UiDevice device = getUiDevice();  
  6.           
  7.         //點擊home鍵操作  
  8.         device.pressHome();  
  9.           
  10.         //如中提到的,我們使用content-desc屬性Apps選擇所有應用列表  
  11.         UiObject appsTab = new UiObject(new UiSelector().description("Apps"));  
  12.         appsTab.click();  
  13.           
  14.         //因為簡訊介面在第二個列表頁面,所以我們可以先滑動一下  
  15.         //通過scrollable屬性來選定滑動view  
  16.         UiScrollable appViews = new UiScrollable(new UiSelector().scrollable(true));  
  17.         appViews.setAsHorizontalList();  
  18.         appViews.scrollForward();  
  19.           
  20.         //通過類名和Text找到簡訊應用表徵圖,Text擷取通過uiautomatorviewer  
  21.         UiObject messageApp = appViews.getChildByText(new UiSelector().className(android.widget.TextView.class.getName()), "Messaging");  
  22.         //點擊並等待開啟簡訊應用  
  23.         messageApp.clickAndWaitForNewWindow();  
  24.           
  25.         //選擇建立簡訊  
  26.         UiObject newMessage = new UiObject(new UiSelector().description("New message"));  
  27.         newMessage.click();  
  28.           
  29.         //選擇編輯資訊  
  30.         UiObject editMessage = new UiObject(new UiSelector().text("Type text message"));  
  31.         editMessage.click();  
  32.         editMessage.setText("hello world!");  
  33.     }  
  34. }  

4. 然後編譯和發布uiautomator測試

4.1 進入sdk tools目錄使用如下命令:

android.bat create uitest-project -n MessageTestCase -t 1 -p "C:\Documents and Settings\***\workspace\MessageTestCase"

其中MessageTestCase是工程名,第二個路徑是工程所在路徑

然後會在工程所在路徑產生一個build.xml檔案

4.2 使用如下命令設定Android Home

set ANDROID_HOME=<path_to_your_sdk>

4.3 然後需要下載ant,並設定ant為環境變數(也可以不設定,不過使用這個命令前加上路徑)

首先切換路徑到工程所在目錄,然後使用如下命令編譯

apache-ant-1.9.3\bin\ant build

之後在工程的bin目錄下回產生.jar檔案

4.4 push jar檔案到一個目錄,如

adb push <path_to_output_jar> /data/local/tmp

4.5 運行測試

adb shell uiautomator runtest MessageTestCase.jar -c com.wjh.test.MessageTestCase

Android uiautomator執行個體使用

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.