UiDevice 类的新特性:

1,UiObject2 findObject(BySelector selector)
通过查找获取 uiobject2 元素

2,List findObjects(BySelector selector)
通过查找获取 uiobject2 元素集合

3,R wait(SearchCondition condition, long timeout)
延时获取元素,如果元素不存在返回 null

4, R performActionAndWait(Runnable action, EventCondition condition, long timeout)
执行 action 并等待条件得到满足。

5, void setCompressedLayoutHeirarchy(boolean compressed)
设置是否启用布局压缩
启用或禁用布局层次压缩。如果启用了压缩,来源于 Acessibility 框架布局层次将只包含对 uiautomator 测试很重要的节点。任何使得浏览和搜索层次结构效率低下的不必要的周围布置节点都会被删除。

6, void dumpWindowHierarchy (File dest)
保存当前层次结构到文件,旧版本 dumpWindowHierarchy(String fileName) 方法,已不再推荐使用。

UiDevice 基本特性和方法:

1,Point getDisplaySizeDp()
设备独立像素

2,String getProductName()
获取设备名称 findObjects
findObjects

3,String getLastTraversedText()
获取最后一次遍历得到的文本

4,void clearLastTraversedText()
清除最后一次遍历得到的文本

5,模拟按键操作
boolean pressMenu()
boolean pressBack()
boolean pressHome()
boolean pressSearch()
boolean pressDPadCenter()
boolean pressDPadDown()
boolean pressDPadUp()
boolean pressDPadLeft()
boolean pressDPadRight()
boolean pressDelete()
boolean pressEnter()
全部调用的 pressKeyCode(int keyCode) 方法

6, boolean pressKeyCode(int keyCode)
通过 keycode 执行不一样的按键操作

7,boolean pressKeyCode(int keyCode, int metaState)
通过 keycode 执行不一样的按键操作,并设置一个标记

8,public boolean pressRecentApps()
打开正在运行的 app

9, boolean openNotification()
打开通知

10,boolean openQuickSettings()
打开快速设置

11,int getDisplayWidth()
获取显示的宽度,以像素为单位

12,int getDisplayHeight()
获取显示的高度,以像素为单位

13, boolean click(int x, int y)
通过坐标点击

14, boolean swipe(int startX, int startY, int endX, int endY, int steps)
二点之间滑动

15,boolean drag(int startX, int startY, int endX, int endY, int steps)
二点之间拖动

16,boolean swipe(Point[] segments, int segmentSteps)
多点之间进行滑动

17,void waitForIdle()
等待当前应用空闲,默认超时为 10*1000
private long mWaitForIdleTimeout = 10 * 1000;

18,void waitForIdle(long timeout)
等待当前应用空闲

19,String getCurrentPackageName()
检索可访问事件的最后一个包的名称。

20,void registerWatcher(String name, UiWatcher watcher)
注册监听器

21,void removeWatcher(String name)
删除监听器

22, void runWatchers()
启动所有监听

23,void resetWatcherTriggers()
重置所有监听,List mWatchersTriggers = new ArrayList,监听列表被清空:mWatchersTriggers.clear();

24,boolean hasWatcherTriggered(String watcherName)
查询监听列表中是否存在 watcherName 的监听

25,boolean hasAnyWatcherTriggered()
查询监听列表中是否有监听存在

26,boolean isNaturalOrientation()
监查设备是否自然竖屏方向

27,int getDisplayRotation()
返回当前的旋转

28,void freezeRotation()
禁用传感器,保留现在旋转状态

29,void unfreezeRotation()
启用传感器

30, void setOrientationLeft()
模拟左转,并冻结传感器

31,void setOrientationRight()
模拟右转,并冻结传感器

32,void setOrientationNatural()
设置旋转为正常竖屏,并冻结传感器

33,void wakeUp()
模拟按下电源按钮,唤醒屏幕

34,boolean isScreenOn()
检查屏幕是否被唤醒

35,void sleep()
模拟按下电源按钮,锁屏

36,void dumpWindowHierarchy(String fileName)
保存当前层次结构到文件

37,boolean waitForWindowUpdate(final String packageName, long timeout)
等待窗体包内容更新

38,boolean takeScreenshot(File storePath)
截图当前窗口并将其保存为 PNG,默认尺寸为 1.0f,压缩范围 90

39,boolean takeScreenshot(File storePath, float scale, int quality)
截图当前窗口并将其保存为 PNG,可以指图片尺寸,压缩范围

//屏幕截图 返回true 为截屏成功
 Boolean tmpa = device.takeScreenshot(new File("/data/local/tmp/test2.png"));
 System.out.println("截屏返回值:" + tmpa);
 //保存当前层次结构到文件 旧的dumpWindowHierarchy(String file )已过时
 device.dumpWindowHierarchy(new File("/data/local/tmp/test1.xml"));
 //打开正在运行的app
 device.pressRecentApps();


↙↙↙阅读原文可查看相关链接,并与作者交流