Android自动化测试技巧--UiAutomator(一)

  1. 环境搭建

    开发环境:eclipse 
    编译环境:Ant、Java、Android SDK (需要配置环境变量)

  2. UiAutomator基本对象之UiDevice

    通常用于获取系统的设备信息、系统按键、全局操作等。

获取坐标参数

返回值 方法 解释
boolean click(int x, int y) 在点(x, y)点击
int getDisplayHeight() 获取屏幕高度
int getDisplayWidth() 获取屏幕宽度
Point getDisplaySizeDp() 获取显示尺寸大小

系统信息

返回值 方法 解释
void getCurrentPackageName() 获取当前界面包名
void getCurrentActivityName() 获取当前界面Activity
void dumpWindowHierarchy(fileName) dump当前布局文件到/data/local/tmp/目录

滑动、拖拽

返回值 方法 解释
boolean drag(startX, startY, endX, endY, steps) 拖拽坐标处对象到另一个坐标
boolean swipe(segments, segmentSteps) 在Points[]中以segmentSteps滑动
boolean swipe(startX, startY, endX, endY, steps) 通过坐标滑动

系统按键

返回值 方法 解释
void wakeUp() 按电源键亮屏
void sleep() 按电源键灭屏
boolean isScreenOn() 亮屏状态
void setOrientationLeft() 禁用传感器,并左旋屏幕,固定
void setOrientationNatural() 禁用传感器,恢复默认屏幕方向,固定
void setOrientationRight() 禁用传感器,并右旋屏幕,固定
void unfreezeRotation() 启用传感器,并允许旋转
boolean isNaturalOrientation() 检测是否处于默认旋转状态
void getDisplayRotation() 返回当前旋转状态,0、1、、2、3分别代表0、90、180、270度旋转
void freezeRotation() 禁用传感器,并冻结当前状态
boolean takeScreenshot(storePath) 当前窗口截图、1.0f缩放、90%质量保存在storePath
void takeScreenshot(storePath, scale, quality) 同上,但指定缩放和压缩比率
void openNotification() 打开通知栏
void openQuickSettings() 打开快速设置

等待窗口

返回值 方法 解释
void waitForIdle() 等待当前窗口处于空闲状态、默认10s
void waitForIdle(long timeout) 自定义超时等待当前窗口处于空闲状态
boolean waitForWindowUpdate(packageName, timeout) 等待窗口内容更新
// 输入按键UiDevice.getInstance().pressKeyCode(KeyEvent.KEYCODE_A);
UiDevice.getInstance().pressKeyCode(KeyEvent.KEYCODE_B);
UiDevice.getInstance().pressKeyCode(KeyEvent.KEYCODE_C);
UiDevice.getInstance().pressKeyCode(KeyEvent.KEYCODE_A,1);
UiDevice.getInstance().pressKeyCode(KeyEvent.KEYCODE_B,1);
UiDevice.getInstance().pressKeyCode(KeyEvent.KEYCODE_C,1);// 点击UiDevice.getInstance().click(400, 400);int h=UiDevice.getInstance().getDisplayHeight();int w=UiDevice.getInstance().getDisplayWidth();
UiDevice.getInstance().click(w/2, h/2);// Swipe、Dragint startX, startY, endX, endY, steps;
startX=300;
startY=400;
endX=startX;
endY=startY + 200;
steps=100;
UiDevice.getInstance().drag(startX, startY, endX, endY, steps);int h=UiDevice.getInstance().getDisplayHeight();int w=UiDevice.getInstance().getDisplayWidth();
UiDevice.getInstance().swipe(w, h/2, 30, h/2, 10);

Point p1=new Point();
Point p2=new Point();
Point p3=new Point();
Point p4=new Point();

p1.x=250;p1.y=300;
p2.x=600;p2.y=350;
p3.x=800;p3.y=800;
p4.x=200;p4.y=900;

Point[] pp={p1,p2,p3,p4};

UiDevice.getInstance().swipe(pp, 50);// 灭屏、亮屏UiDevice.getInstance().sleep();
UiDevice.getInstance().wakeUp();// NotificationUiDevice.getInstance().openNotification();
sleep(3000);
UiDevice.getInstance().openQuickSettings();

UiDevice.getInstance().dumpWindowHierarchy("ui.xml");


你可能感兴趣的:(Android自动化测试技巧--UiAutomator(一))