UIAutomator之---UiDevice

UiDevice

UiDevice是用来与手机、模拟器等测试设备进行交互,主要有以下功能:

  • 获取设备信息
  • 发送操作指令,比如按键等
  • 截图、保存布局文件等

本文整理了UiDevice的API,并对常用的API进行举例说明。

API

Return TypeFunction and Description
voidclearLastTraversedText();
清除最后一次遍历得到的文本.
booleanclick(int x, int y);
点击屏幕上的(x, y)坐标,坐标原点为屏幕左上角.
booleandrag(int startX, int startY, int endX, int endY, int steps);
拖拽,起始坐标为 (startX, startY),终点为(endX, endY);步长为steps.
booleanclick(int startX, int startY, int endX, int endY, int steps);
拖拽,起始坐标为 (startX, startY),终点为(endX, endY);步长为steps
voiddumpWindowHierarchy(File dest);
Ddump当前布局文件到/data/local/tmp/目录.
voiddumpWindowHierarchy(OutputStream out);
dump当前布局文件到一个输出流.
UiObject2findObject(BySelector selector);
返回符合selector的第一个控件,如果没有匹配到控件,则返回null.
UiObjectfindObject(UiSelector selector);
返回符合selector的第一个控件,如果没有匹配到控件,则返回null.
ListfindObjects(BySelector selector);
返回所有符合selector的控件.
voidfreezeRotation();
禁用传感器,并且保持当前屏幕方向不变.
StringgetCurrentPackageName();
获取当前界面包名.
intgetDisplayHeight();
获取屏幕显示的高度,单位为像素.
intgetDisplayRotation();
获取当前界面的方向.
PointgetDisplaySizeDp()
获取显示尺寸大小.
intgetDisplayWidth();
获取屏幕显示的宽度,单位为像素.
static UiDevicegetInstance(Instrumentation instrumentation);
获取UiDevice的实例.
StringgetLastTraversedText();
得到最后一次遍历得到的文本.
StringgetLauncherPackageName();
获取默认加载的包名.
StringgetProductName();
获取设备的工厂名.
booleanhasAnyWatcherTriggered();
检查已经注册的UiWatcher是否被触发.
booleanhasObject(BySelector selector);
检查当前界面是否包含与selector匹配的控件.
booleanhasWatcherTriggered(String watcherName);
检查已经注册名为watcherName的UiWatcher是否被触发.
booleanisNaturalOrientation();
检查屏幕是否是默认的显示方向.
booleanisScreenOn();
检查屏幕是否亮.
booleanopenNotification();
打开通知.
booleanopenQuickSettings();
打开快速设置.
RperformActionAndWait(Runnable action, EventCondition condition, long timeout);
执行一个action,并且等待condition的到来.
booleanpressBack();
模拟返回键.
booleanpressDPadCenter();
模拟 Center 键.
booleanpressDPadDown();
模拟向下按键.
booleanpressDPadLeft();
模拟向左按键.
booleanpressDPadRight();
模拟向右按键.
booleanpressDPadUp();
模拟向上按键.
booleanpressDelete();
模拟删除键.
booleanpressEnter();
模拟确认/回车键.
booleanpressHome();
模拟Home键.
booleanpressKeyCode(int keyCode);
以keyCode模拟一个按键.
booleanpressKeyCode(int keyCode, int metaState);
以keyCode模拟一个按键.
booleanpressMenu();
模拟菜单键.
booleanpressRecentApps();
打开最近应用界面.
booleanpressSearch();
模拟搜索按键.
voidregisterWatcher(String name, UiWatcher watcher);
注册一个UiWatcher.
voidremoveWatcher(String name);
取消注册一个UiWatcher.
voidresetWatcherTriggers();
重置一个已被触发的UiWatcher.
voidrunWatchers();
运行所有已被注册的watcher.
voidsetCompressedLayoutHeirarchy(
voidsetOrientationLeft();
模拟屏幕向左转,并且关闭传感器、保持屏幕方向不变.
voidsetOrientationNatural();
设置屏幕默认方向,并且关闭传感器、保持屏幕方向不变.
voidsetOrientationRight();
模拟屏幕向右转,并且关闭传感器、保持屏幕方向不变.
voidsleep();
屏幕亮时,等价于短按一次关机键;屏幕灭时,该方法不起作用.
booleanswipe(int startX, int startY, int endX, int endY, int steps);
滑动,起始坐标为 (startX, startY),终点为(endX, endY); 步长为steps.
booleanswipe(Point[] segments, int segmentSteps);
滑动一系列点,常用作模拟自由动作.
booleantakeScreenshot(File storePath, float scale, int quality);
为当前界面截图并保存为PNG格式图片.
booleantakeScreenshot(File storePath);
为当前界面截图并保存为PNG格式图片.
voidunfreezeRotation();
重新启用传感器,
Rwait(SearchCondition condition, long timeout);
等待一个condition.
voidwaitForIdle(long timeout);
等待当前app空闲
voidwaitForIdle();
等待当前窗口处于空闲状态、默认10s
booleanwaitForWindowUpdate(String packageName, long timeout);
待窗口内容更新.
voidwakeUp();
模拟短按开关,

Example

    //获取UiDevice实例
    UiDevice mDevice = UiDevice.getInstance(InstrumentationRegistry.getInstrumentation());

    //判断屏幕是否亮,如果不是则亮屏
    if (!mDevice.isScreenOn()) {
        Log.i(TAG, "screen is off");
        mDevice.wakeUp();
    } else {
        Log.i(TAG, "screen is on");
    }

    //以id找到匹配的控件并点击
    mDevice.findObject(new UiSelector().resourceId("com.star.uiautomator:id/add")).click();

    //获取屏幕的宽、高以及尺寸大小
    Log.i(TAG, "Screen height is: " + mDevice.getDisplayHeight());
    Log.i(TAG, "Screen weight is: " + mDevice.getDisplayWidth());
    Point displaySizeDp = mDevice.getDisplaySizeDp();
    Log.i(TAG, "Screen size is: " + displaySizeDp.x + "-" + displaySizeDp.y);

    // 获取包名
    Log.i(TAG, "Package name is: " + mDevice.getCurrentPackageName());

    //执行各类按键
    mDevice.pressBack();  // 返回
    mDevice.pressHome();  // 返回桌面键
    mDevice.pressMenu();  // 菜单
    mDevice.pressRecentApps();  // 打开最近使用的应用

点亮屏幕的情况下Log输出如下:

I/TestRunner: started: uiDeviceText(com.star.uiautomator.UiAutomatorTest)
I/uiDeviceText: screen is on
I/uiDeviceText: Screen height is: 2392
I/uiDeviceText: Screen weight is: 1440
I/uiDeviceText: Screen size is: 411-731
I/uiDeviceText: Package name is: com.star.uiautomator
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值