UiDevice

public class UiDevice
extends Object

java.lang.Object
   ↳ android.support.test.uiautomator.UiDevice


UiDevice提供对设备状态信息的访问。 您还可以使用此类来模拟用户在设备上的操作,例如按下d-pad或按Home和Menu按钮。

Summary

Public methods

void clearLastTraversedText()

清除上次UI遍历事件中的文本。

boolean click(int x, int y)

在用户指定的任意坐标点击一下

boolean drag(int startX, int startY, int endX, int endY, int steps)

执行从一个坐标滑动到另一个坐标。

void dumpWindowHierarchy(File dest)

将当前窗口层次转储到 File

void dumpWindowHierarchy(OutputStream out)

将当前窗口层次转储到 OutputStream

void dumpWindowHierarchy(String fileName)

此方法已弃用。 改为使用dumpWindowHierarchy(File)dumpWindowHierarchy(OutputStream)

UiObject2 findObject(BySelector selector)

返回第一个匹配 selector条件的对象。

UiObject findObject(UiSelector selector)

返回表示与指定的选择器条件相匹配的视图的UiObject。

List<UiObject2> findObjects(BySelector selector)

返回符合 selector标准的所有对象。

void freezeRotation()

禁用传感器并在当前旋转状态下冻结设备旋转。

String getCurrentActivityName()

此方法已弃用。 返回的结果应该被认为是不可靠的

String getCurrentPackageName()

检索报告可访问性事件的最后一个包的名称。

int getDisplayHeight()

获取显示的高度,以像素为单位。

int getDisplayRotation()

返回显示的当前旋转,如 Surface所定义

Point getDisplaySizeDp()

以dp(与设备无关的像素)返回显示尺寸每个屏幕旋转调整返回的显示尺寸。

int getDisplayWidth()

获取显示的宽度,以像素为单位。

static UiDevice getInstance()

此方法已弃用。 应该使用getInstance(Instrumentation)来代替。 该版本隐藏了UiDevice对具有Instrumentation引用的依赖性,并且容易被误用。

static UiDevice getInstance(Instrumentation instrumentation)

检索UiDevice的单例实例

String getLastTraversedText()

从接收到的最后一次UI遍历事件中检索文本。

String getLauncherPackageName()

检索默认启动程序包名称

String getProductName()

检索设备的产品名称。

boolean hasAnyWatcherTriggered()

检查是否有注册的 UiWatcher已经触发。

boolean hasObject(BySelector selector)

返回给定的 selector条件是否匹配。

boolean hasWatcherTriggered(String watcherName)

检查特定注册 UiWatcher是否已触发。

boolean isNaturalOrientation()

检查设备是否处于其自然方向。

boolean isScreenOn()

如果屏幕处于开启状态,则检查电源管理器。

boolean openNotification()

打开通知栏。

boolean openQuickSettings()

打开快速设置阴影。

<R> R performActionAndWait(Runnable action, EventCondition<R> condition, long timeout)

执行提供的 action并等待 condition被满足。

boolean pressBack()

模拟BACK按钮上的短按。

boolean pressDPadCenter()

模拟CENTER按钮上的短按。

boolean pressDPadDown()

在DOWN按钮上模拟短按。

boolean pressDPadLeft()

模拟LEFT按钮上的短按。

boolean pressDPadRight()

模拟RIGHT按钮上的短按。

boolean pressDPadUp()

模拟UP按钮上的短按。

boolean pressDelete()

在DELETE键上模拟一个短按。

boolean pressEnter()

按下ENTER键模拟一个短按。

boolean pressHome()

模拟HOME按钮上的短按。

boolean pressKeyCode(int keyCode)

使用键码模拟短按。

boolean pressKeyCode(int keyCode, int metaState)

使用键码模拟短按。

boolean pressMenu()

模拟MENU按钮上的短按。

boolean pressRecentApps()

模拟Recent Apps按钮上的短按。

boolean pressSearch()

模拟SEARCH按钮上的短按。

void registerWatcher(String name, UiWatcher watcher)

当测试框架无法使用 UiSelector找到匹配项时,注册 UiWatcher以自动运行。

void removeWatcher(String name)

删除以前注册的 UiWatcher

void resetWatcherTriggers()

重置已触发的 UiWatcher

void runWatchers()

此方法强制所有注册的观察者运行。

void setCompressedLayoutHeirarchy(boolean compressed)

启用或禁用布局层次结构压缩。

void setOrientationLeft()

模拟将设备定向到左侧,并通过禁用传感器来冻结旋转。

void setOrientationNatural()

模拟将设备定向到其自然方向,并通过禁用传感器来冻结旋转。

void setOrientationRight()

模拟将设备定向到右侧,并通过禁用传感器来冻结旋转。

void sleep()

如果屏幕开启,此方法只需按下电源按钮,否则,如果屏幕已关闭,则不执行任何操作。

boolean swipe(int startX, int startY, int endX, int endY, int steps)

使用步数来执行从一个坐标到另一个坐标的滑动以确定平滑度和速度。

boolean swipe(Point[] segments, int segmentSteps)

在Point数组中执行点之间的滑动。

boolean takeScreenshot(File storePath, float scale, int quality)

截取当前窗口并将其存储为PNG屏幕截图根据屏幕旋转进行调整

boolean takeScreenshot(File storePath)

截取当前窗口的截图并将其存储为PNG默认比例为1.0f(原始大小),并使用90%质量屏幕截图根据屏幕旋转进行调整

void unfreezeRotation()

重新启用传感器并取消冻结设备旋转,从而允许其内容随设备物理旋转而旋转。

<R> R wait(SearchCondition<R> condition, long timeout)

等待给定的 condition

void waitForIdle(long timeout)

等待当前应用程序闲置。

void waitForIdle()

等待当前应用程序闲置。

boolean waitForWindowUpdate(String packageName, long timeout)

等待发生窗口内容更新事件。

void wakeUp()

如果屏幕关闭,此方法模拟按电源按钮,否则,如果屏幕已打开,则不执行任何操作。

Inherited methods

From class java.lang.Object

Public methods

clearLastTraversedText

void clearLastTraversedText ()

清除上次UI遍历事件中的文本。 getLastTraversedText()

click

boolean click (int x, 
                int y)

在用户指定的任意坐标点击一下

Parameters
x int: coordinate
y int: coordinate
Returns
boolean true if the click succeeded else false

drag

boolean drag (int startX, 
                int startY, 
                int endX, 
                int endY, 
                int steps)

执行从一个坐标滑动到另一个坐标。 您可以通过指定步数来控制滑动的平滑度和速度。 每步执行都会被限制为每步5毫秒,因此对于100步,刷卡大约需要0.5秒才能完成。

Parameters
startX int: X-axis value for the starting coordinate
startY int: Y-axis value for the starting coordinate
endX int: X-axis value for the ending coordinate
endY int: Y-axis value for the ending coordinate
steps int: is the number of steps for the swipe action
Returns
boolean true if swipe is performed, false if the operation fails or the coordinates are invalid

dumpWindowHierarchy

void dumpWindowHierarchy (File dest)

将当前窗口层次转储到 File

Parameters
dest File: The file in which to store the window hierarchy information.
Throws
IOException

dumpWindowHierarchy

void dumpWindowHierarchy (OutputStream out)

将当前窗口层次转储到 OutputStream

Parameters
out OutputStream: The output stream that the window hierarchy information is written to.
Throws
IOException

dumpWindowHierarchy

void dumpWindowHierarchy (String fileName)

此方法已弃用。
改为使用dumpWindowHierarchy(File)dumpWindowHierarchy(OutputStream)

用于调试的辅助方法转储当前窗口的布局层次结构。 相对文件路径存储在应用程序的内部专用存储位置。

findObject

UiObject2 findObject (BySelector selector)

返回第一个匹配 selector条件的对象。

Parameters
selector BySelector
Returns
UiObject2

findObject

UiObject findObject (UiSelector selector)

返回表示与指定的选择器条件相匹配的视图的UiObject。

Returns
UiObject UiObject object

findObjects

List<UiObject2> findObjects (BySelector selector)

返回符合 selector条件的所有对象。

Parameters
selector BySelector
Returns
List<UiObject2>

freezeRotation

void freezeRotation ()

禁用传感器并在当前旋转状态下冻结设备旋转。

Throws
RemoteException
RemoteException

getCurrentActivityName

String getCurrentActivityName ()

此方法已弃用。
返回的结果应该被认为是不可靠的

检索最后一次活动以报告辅助功能事件。

Returns
String String name of activity

getCurrentPackageName

String getCurrentPackageName ()

检索报告可访问性事件的最后一个包的名称。

Returns
String String name of package

getDisplayHeight

int getDisplayHeight ()

获取显示的高度,以像素为单位。 尺寸根据显示屏的当前方向进行调整。

Returns
int height in pixels or zero on failure

getDisplayRotation

int getDisplayRotation ()

返回显示的当前旋转,如 Surface所定义

Returns
int

getDisplaySizeDp

Point getDisplaySizeDp ()

以dp(与设备无关的像素)返回显示尺寸每个屏幕旋转调整返回的显示尺寸。 此外,这将返回屏幕的实际大小,而不是根据系统装饰(如状态栏)进行调整。

Returns
Point a Point containing the display size in dp

getDisplayWidth

int getDisplayWidth ()

获取显示的宽度,以像素为单位。 宽度和高度细节根据显示屏的当前方向进行报告。

Returns
int width in pixels or zero on failure

getInstance

UiDevice getInstance ()

此方法已弃用。
应该使用getInstance(Instrumentation)来代替。 该版本隐藏了UiDevice对具有Instrumentation引用的依赖性,并且容易被误用。

检索UiDevice的单例实例

Returns
UiDevice UiDevice instance

getInstance

UiDevice getInstance (Instrumentation instrumentation)

检索UiDevice的单例实例

Parameters
instrumentation Instrumentation
Returns
UiDevice UiDevice instance

getLastTraversedText

String getLastTraversedText ()

从接收到的最后一次UI遍历事件中检索文本。 您可以使用此方法读取WebView容器中的内容,因为辅助功能框架会在每个文本突出显示时触发事件。 您可以编写一个测试来执行方向箭头按钮,以关注WebView中的不同元素,并调用此方法从每个遍历元素中获取文本。 如果您正在测试可以返回对文档对象模型(DOM)对象的引用的视图容器,则测试应该使用视图的DOM。

Returns
String text of the last traversal event, else return an empty string

getLauncherPackageName

String getLauncherPackageName ()

检索默认启动程序包名称

Returns
String package name of the default launcher

getProductName

String getProductName ()

检索设备的产品名称。 此方法提供有关运行测试的设备类型的信息。 该值与通过调用#adb shell getprop ro.product.name返回的值相同。

Returns
String product name of the device

hasAnyWatcherTriggered

boolean hasAnyWatcherTriggered ()

检查是否有注册的UiWatcher已经触发。 registerWatcher(String, UiWatcher)hasWatcherTriggered(String)

Returns
boolean

hasObject

boolean hasObject (BySelector selector)

返回给定的 selector条件是否匹配。

Parameters
selector BySelector
Returns
boolean

hasWatcherTriggered

boolean hasWatcherTriggered (String watcherName)

检查特定注册的UiWatcher是否已触发。 registerWatcher(String, UiWatcher) 如果UiWatcher运行并且其checkForCondition()调用返回true ,则认为UiWatcher被触发。 如果观察者检测到来自ANR或崩溃对话框的错误并且测试需要知道UiWatcher是否被触发,这很有用。

Returns
boolean true if triggered else false

isNaturalOrientation

boolean isNaturalOrientation ()

检查设备是否处于其自然方向。 这是通过检查方向是在0还是180度来确定的。

Returns
boolean true if it is in natural orientation

isScreenOn

boolean isScreenOn ()

如果屏幕处于开启状态,则检查电源管理器。

Returns
boolean true if the screen is ON else false
Throws
RemoteException
RemoteException

openNotification

boolean openNotification ()

打开通知栏。

Returns
boolean true if successful, else return false

openQuickSettings

boolean openQuickSettings ()

打开快速设置阴影。

Returns
boolean true if successful, else return false

performActionAndWait

R performActionAndWait (Runnable action, 
                EventCondition<R> condition, 
                long timeout)

执行提供的 action并等待 condition被满足。

Parameters
action Runnable: The Runnable action to perform.
condition EventCondition: The EventCondition to evaluate.
timeout long: Maximum amount of time to wait in milliseconds.
Returns
R The final result returned by the condition.

pressBack

boolean pressBack ()

模拟BACK按钮上的短按。

Returns
boolean true if successful, else return false

pressDPadCenter

boolean pressDPadCenter ()

模拟CENTER按钮上的短按。

Returns
boolean true if successful, else return false

pressDPadDown

boolean pressDPadDown ()

在DOWN按钮上模拟短按。

Returns
boolean true if successful, else return false

pressDPadLeft

boolean pressDPadLeft ()

模拟LEFT按钮上的短按。

Returns
boolean true if successful, else return false

pressDPadRight

boolean pressDPadRight ()

模拟RIGHT按钮上的短按。

Returns
boolean true if successful, else return false

pressDPadUp

boolean pressDPadUp ()

模拟UP按钮上的短按。

Returns
boolean true if successful, else return false

pressDelete

boolean pressDelete ()

在DELETE键上模拟一个短按。

Returns
boolean true if successful, else return false

pressEnter

boolean pressEnter ()

按下ENTER键模拟一个短按。

Returns
boolean true if successful, else return false

pressHome

boolean pressHome ()

模拟HOME按钮上的短按。

Returns
boolean true if successful, else return false

pressKeyCode

boolean pressKeyCode (int keyCode)

使用键码模拟短按。 KeyEvent

Parameters
keyCode int
Returns
boolean true if successful, else return false

pressKeyCode

boolean pressKeyCode (int keyCode, 
                int metaState)

使用键码模拟短按。 KeyEvent

Parameters
keyCode int: the key code of the event.
metaState int: an integer in which each bit set to 1 represents a pressed meta key
Returns
boolean true if successful, else return false

pressMenu

boolean pressMenu ()

模拟MENU按钮上的短按。

Returns
boolean true if successful, else return false

pressRecentApps

boolean pressRecentApps ()

模拟Recent Apps按钮上的短按。

Returns
boolean true if successful, else return false
Throws
RemoteException
RemoteException

pressSearch

boolean pressSearch ()

模拟SEARCH按钮上的短按。

Returns
boolean true if successful, else return false

registerWatcher

void registerWatcher (String name, 
                UiWatcher watcher)

注册UiWatcher以在测试框架无法使用UiSelector找到匹配项时自动运行。 runWatchers()

Parameters
name String: to register the UiWatcher
watcher UiWatcher: UiWatcher

removeWatcher

void removeWatcher (String name)

删除以前注册的UiWatcher registerWatcher(String, UiWatcher)

Parameters
name String: used to register the UiWatcher

resetWatcherTriggers

void resetWatcherTriggers ()

重置已触发的UiWatcher 如果UiWatcher运行并且其checkForCondition()调用返回true ,则认为UiWatcher被触发。 registerWatcher(String, UiWatcher)

runWatchers

void runWatchers ()

此方法强制所有注册的观察者运行。 registerWatcher(String, UiWatcher)

setCompressedLayoutHeirarchy

void setCompressedLayoutHeirarchy (boolean compressed)

启用或禁用布局层次结构压缩。 如果启用了压缩,则从可访问框架派生的布局分层结构将只包含对uiautomator测试非常重要的节点。 任何不必要的周边布局节点都会使查看和搜索层次结构效率低下。

Parameters
compressed boolean: true to enable compression; else, false to disable

setOrientationLeft

void setOrientationLeft ()

模拟将设备定向到左侧,并通过禁用传感器来冻结旋转。 如果您想取消冻结旋转并重新启用传感器,请参阅unfreezeRotation()

Throws
RemoteException
RemoteException

setOrientationNatural

void setOrientationNatural ()

模拟将设备定向到其自然方向,并通过禁用传感器来冻结旋转。 如果您想取消冻结旋转并重新启用传感器,请参阅unfreezeRotation()

Throws
RemoteException
RemoteException

setOrientationRight

void setOrientationRight ()

模拟将设备定向到右侧,并通过禁用传感器来冻结旋转。 如果您想要冻结旋转并重新启用传感器,请参阅unfreezeRotation()

Throws
RemoteException
RemoteException

sleep

void sleep ()

如果屏幕开启,此方法只需按下电源按钮,否则,如果屏幕已关闭,则不执行任何操作。

Throws
RemoteException
RemoteException

swipe

boolean swipe (int startX, 
                int startY, 
                int endX, 
                int endY, 
                int steps)

使用步数来执行从一个坐标到另一个坐标的滑动以确定平滑度和速度。 每步执行都被限制为每步5毫秒。 因此,对于100个步骤,刷卡大约需要1/2秒才能完成。

Parameters
steps int: is the number of move steps sent to the system
Returns
boolean false if the operation fails or the coordinates are invalid

swipe

boolean swipe (Point[] segments, 
                int segmentSteps)

在Point数组中执行点之间的滑动。 每步执行都被限制为每步5毫秒。 因此,对于100个步骤,刷卡大约需要1/2秒才能完成

Parameters
segments Point: is Point array containing at least one Point object
segmentSteps int: steps to inject between two Points
Returns
boolean true on success

takeScreenshot

boolean takeScreenshot (File storePath, 
                float scale, 
                int quality)

截取当前窗口并将其存储为PNG屏幕截图根据屏幕旋转进行调整

Parameters
storePath File: where the PNG should be written to
scale float: scale the screenshot down if needed; 1.0f for original size
quality int: quality of the PNG compression; range: 0-100
Returns
boolean true if screen shot is created successfully, false otherwise

takeScreenshot

boolean takeScreenshot (File storePath)

截取当前窗口的截图并将其存储为PNG默认比例为1.0f(原始大小),并使用90%质量屏幕截图根据屏幕旋转进行调整

Parameters
storePath File: where the PNG should be written to
Returns
boolean true if screen shot is created successfully, false otherwise

unfreezeRotation

void unfreezeRotation ()

重新启用传感器并取消冻结设备旋转,从而允许其内容随设备物理旋转而旋转。 在测试执行期间,最好将设备冻结在特定方向,直到测试用例执行完成。

Throws
RemoteException

wait

R wait (SearchCondition<R> condition, 
                long timeout)

等待给定的 condition

Parameters
condition SearchCondition: The SearchCondition to evaluate.
timeout long: Maximum amount of time to wait in milliseconds.
Returns
R The final result returned by the condition.

waitForIdle

void waitForIdle (long timeout)

等待当前应用程序闲置。

Parameters
timeout long: in milliseconds

waitForIdle

void waitForIdle ()

等待当前应用程序闲置。 默认等待超时时间为10秒

waitForWindowUpdate

boolean waitForWindowUpdate (String packageName, 
                long timeout)

等待发生窗口内容更新事件。 如果指定了窗口的包名称,但当前窗口没有相同的包名称,则该函数立即返回。

Parameters
packageName String: the specified window package name (can be null). If null, a window update from any front-end window will end the wait
timeout long: the timeout for the wait
Returns
boolean true if a window update occurred, false if timeout has elapsed or if the current window does not have the specified package name

wakeUp

void wakeUp ()

如果屏幕关闭,此方法模拟按电源按钮,否则,如果屏幕已打开,则不执行任何操作。 如果屏幕处于关闭状态并刚打开,则此方法会插入500毫秒的延迟时间,以允许设备唤醒并接受输入。

Throws
RemoteException
RemoteException