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 打开快速设置

你可能感兴趣的:(测试)