Android UI 自動化測試之UiDevice

  1. UiDevice介紹
    UiDevice代表設備狀態,爲單例模式
    具體功能:
    (1)獲取設備信息,屏幕分辨率,旋轉狀態,亮滅屏狀態等
    (2)操作:按鍵,座標操作,滑動,拖拽,滅屏喚醒屏幕,截圖等
    (3)監聽器功能

    //容易造成空指針異常
    //      getUiDevice().pressMenu();
    //      getUiDevice().pressHome();
    //     一般使用下列方法
        UiDevice.getInstance().pressMenu();
    UiDevice.getInstance().pressHome();
    
  2. 按鍵與 KEYCODE使用
    手機常見按鍵
    (1) HOME HOME 鍵
    (2)MENU 菜單鍵
    (3)BACK 返回鍵
    (4)VOLUME_UP 音量加
    (5)VOLUME_DOWN 音量減
    (6)RecentApps 最近使用 App
    (7)POWER 電源鍵
    (8)Dpad 上下左右鍵
    (9)….
    按鍵 API說明

        //按鍵 API
        //返回
        UiDevice.getInstance().pressBack();
        //軌跡球中點按鍵
        UiDevice.getInstance().pressDPadCenter();
        //軌跡球上按鍵
        UiDevice.getInstance().pressDPadUp();
        //軌跡球下按鍵
        UiDevice.getInstance().pressDPadDown();
        //軌跡球左按鍵
        UiDevice.getInstance().pressDPadLeft();
        //軌跡球右按鍵
        UiDevice.getInstance().pressDPadRight();
        //刪除
        UiDevice.getInstance().pressDelete();
        //回車
        UiDevice.getInstance().pressEnter();
        //Home 鍵
        UiDevice.getInstance().pressHome();
        //鍵盤代碼 keycode
        //UiDevice.getInstance(int keyCode,int metaState);
        //UiDevice.getInstance(int keyCode);
        //Menu 鍵盤
        UiDevice.getInstance().pressMenu();
        //最近使用 app
        UiDevice.getInstance().pressRecentApps();
        //搜索
        UiDevice.getInstance().pressSearch();



 KEYCODE 鍵盤映射碼
 (1)keyEvent 按鍵事件

//小寫
        UiDevice.getInstance().pressKeyCode(KeyEvent.KEYCODE_A);
        //大寫
        UiDevice.getInstance().pressKeyCode(KeyEvent.KEYCODE_A,1);

3.獲取座標與座標點擊

 (1)方法名:click(int x,int y)  使用座標點擊屏幕
 (2)方法名:getDisplayHeight() 獲取屏幕高度
 (3)方法名:getDisplayWidth() 獲取屏幕寬度

4.拖拽與滑動
拖拽:將一個組件從一個座標點移動到另一個座標處
滑動:從一個座標頂移動到另一個座標點
步長:從一點滑動到另一點使用的時間(1步長是5毫秒)

 (1)方法名:drag(int starX,int startY,int endX int endY,int steps)  拖動對象從一個座標拖動到另一個座標
 (2)方法名:swipe(Poiint[] segments,int segmentSteps) 在點陣列中滑動,5ms 一步
 (3)方法名:swipe(int starX,int startY,int endX int endY,int steps)通過座標滑動屏幕

5.旋轉屏幕
旋轉方向;4個方向,分別爲0度,90度,180度,270度
重力感應器
固定位置與物理旋轉

 (1)方法名: setOrientationLeft() 通過禁用傳感器,然後模擬設備向左轉,並且固定位置
 (2)方法名: setOrientationNatural() 通過禁用傳感器,然後模擬設備轉到其自然默認的方向,並且固定位置
 (3)方法名: setOrientationRight() 通過禁用傳感器,然後模擬設備向右轉,並且固定位置
 (4)方法名: sunfreezeRoation() 重新啓用傳感器和允許物理旋轉
 (5)方法名: isNaturalOrientation() 檢測設置是否處於默認旋轉狀態
 (6)方法名: getDisplayRotation() 返回當前的顯示旋轉,0度,90度,180度,270度,值分別爲0123
 (7)方法名:freezeRoation() 禁用傳感器和凍結裝置屋裏旋轉在其當前旋轉狀態

6.滅屏與喚醒屏幕
滅屏:按電源鍵將屏幕熄滅
喚醒屏幕:在滅屏狀態下安電源鍵點亮屏幕

(1)方法名: wakeUp() 模擬按電源鍵,如果屏幕是喚醒的沒有任何作用
(2)方法名: sleep() 模擬按電源鍵,如果屏幕已經是關閉的則沒有任何作用
(3)方法名:isScreenOn() 檢查屏幕是否亮屏

7.截圖與等待空閒

截圖

(1)方法名:takeScreenshot(File storePath) 把當前窗口截圖並將其存儲爲 png 默認1.0f 規模(原尺寸文件)和90%質量,參數爲 file 類的文件路徑
(2)takeScreenshot(File storePath,float scale,int quality) 把當前窗口截圖爲 png 格式圖片,可以自定義縮放比例與圖片質量

參數說明:
storePath:存儲路徑,必須爲 png 格式
Scale: 縮放比例,1.0爲原圖
Quality: 圖片壓縮質量,範圍爲0-100

等待空閒

(1)waitForIdle(long timeout)自定義超時等待當前應用處於空閒狀態
(2)waitForIdle()等待當前應用處於空閒狀態,默認等待10s
(3)waitForWindowUpdate(String packageName,long timeout) 等待窗口內容更新事件的發生

8.獲取包名&開啓通知欄&快速設置&獲取佈局文件
包名,通知欄,快速設置,佈局文件

(1)getCurrentPackageName() 獲取當前界面的包名
(2)dumpWindowHierachy(String fileName)獲取當前界面佈局文件,保存在/ data/local/tmp 目錄下
(3) openNotification() 打開通知欄
(4)openQuickSettings 打開快速設置

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章