public class UiDevice
extends Object
java.lang.Object | |
↳ | android.support.test.uiautomator.UiDevice |
UiDevice提供对设备状态信息的访问。 您还可以使用此类来模拟用户在设备上的操作,例如按下d-pad或按Home和Menu按钮。
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) 将当前窗口层次转储到 |
void |
dumpWindowHierarchy(OutputStream out) 将当前窗口层次转储到 |
void |
dumpWindowHierarchy(String fileName) 此方法已弃用。 改为使用 |
UiObject2 |
findObject(BySelector selector) 返回第一个匹配 |
UiObject |
findObject(UiSelector selector) 返回表示与指定的选择器条件相匹配的视图的UiObject。 |
List<UiObject2> |
findObjects(BySelector selector) 返回符合 |
void |
freezeRotation() 禁用传感器并在当前旋转状态下冻结设备旋转。 |
String |
getCurrentActivityName() 此方法已弃用。 返回的结果应该被认为是不可靠的 |
String |
getCurrentPackageName() 检索报告可访问性事件的最后一个包的名称。 |
int |
getDisplayHeight() 获取显示的高度,以像素为单位。 |
int |
getDisplayRotation() 返回显示的当前旋转,如 |
Point |
getDisplaySizeDp() 以dp(与设备无关的像素)返回显示尺寸每个屏幕旋转调整返回的显示尺寸。 |
int |
getDisplayWidth() 获取显示的宽度,以像素为单位。 |
static UiDevice |
getInstance() 此方法已弃用。 应该使用 |
static UiDevice |
getInstance(Instrumentation instrumentation) 检索UiDevice的单例实例 |
String |
getLastTraversedText() 从接收到的最后一次UI遍历事件中检索文本。 |
String |
getLauncherPackageName() 检索默认启动程序包名称 |
String |
getProductName() 检索设备的产品名称。 |
boolean |
hasAnyWatcherTriggered() 检查是否有注册的 |
boolean |
hasObject(BySelector selector) 返回给定的 |
boolean |
hasWatcherTriggered(String watcherName) 检查特定注册 |
boolean |
isNaturalOrientation() 检查设备是否处于其自然方向。 |
boolean |
isScreenOn() 如果屏幕处于开启状态,则检查电源管理器。 |
boolean |
openNotification() 打开通知栏。 |
boolean |
openQuickSettings() 打开快速设置阴影。 |
<R> R |
performActionAndWait(Runnable action, EventCondition<R> condition, long timeout) 执行提供的 |
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) 当测试框架无法使用 |
void |
removeWatcher(String name) 删除以前注册的 |
void |
resetWatcherTriggers() 重置已触发的 |
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) 等待给定的 |
void |
waitForIdle(long timeout) 等待当前应用程序闲置。 |
void |
waitForIdle() 等待当前应用程序闲置。 |
boolean |
waitForWindowUpdate(String packageName, long timeout) 等待发生窗口内容更新事件。 |
void |
wakeUp() 如果屏幕关闭,此方法模拟按电源按钮,否则,如果屏幕已打开,则不执行任何操作。 |
Inherited methods |
|
---|---|
From class java.lang.Object
|
boolean click (int x, int y)
在用户指定的任意坐标点击一下
Parameters | |
---|---|
x |
int : coordinate |
y |
int : coordinate |
Returns | |
---|---|
boolean |
true if the click succeeded else false |
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 |
void dumpWindowHierarchy (File dest)
将当前窗口层次转储到 File
。
Parameters | |
---|---|
dest |
File : The file in which to store the window hierarchy information. |
Throws | |
---|---|
IOException |
void dumpWindowHierarchy (OutputStream out)
将当前窗口层次转储到 OutputStream
。
Parameters | |
---|---|
out |
OutputStream : The output stream that the window hierarchy information is written to. |
Throws | |
---|---|
IOException |
void dumpWindowHierarchy (String fileName)
此方法已弃用。
改为使用dumpWindowHierarchy(File)
或dumpWindowHierarchy(OutputStream)
。
用于调试的辅助方法转储当前窗口的布局层次结构。 相对文件路径存储在应用程序的内部专用存储位置。
UiObject2 findObject (BySelector selector)
返回第一个匹配 selector
条件的对象。
Parameters | |
---|---|
selector |
BySelector
|
Returns | |
---|---|
UiObject2 |
UiObject findObject (UiSelector selector)
返回表示与指定的选择器条件相匹配的视图的UiObject。
Returns | |
---|---|
UiObject |
UiObject object |
List<UiObject2> findObjects (BySelector selector)
返回符合 selector
条件的所有对象。
Parameters | |
---|---|
selector |
BySelector
|
Returns | |
---|---|
List<UiObject2> |
void freezeRotation ()
禁用传感器并在当前旋转状态下冻结设备旋转。
Throws | |
---|---|
|
RemoteException |
RemoteException |
String getCurrentActivityName ()
此方法已弃用。
返回的结果应该被认为是不可靠的
检索最后一次活动以报告辅助功能事件。
Returns | |
---|---|
String |
String name of activity |
String getCurrentPackageName ()
检索报告可访问性事件的最后一个包的名称。
Returns | |
---|---|
String |
String name of package |
int getDisplayHeight ()
获取显示的高度,以像素为单位。 尺寸根据显示屏的当前方向进行调整。
Returns | |
---|---|
int |
height in pixels or zero on failure |
Point getDisplaySizeDp ()
以dp(与设备无关的像素)返回显示尺寸每个屏幕旋转调整返回的显示尺寸。 此外,这将返回屏幕的实际大小,而不是根据系统装饰(如状态栏)进行调整。
Returns | |
---|---|
Point |
a Point containing the display size in dp |
int getDisplayWidth ()
获取显示的宽度,以像素为单位。 宽度和高度细节根据显示屏的当前方向进行报告。
Returns | |
---|---|
int |
width in pixels or zero on failure |
UiDevice getInstance ()
此方法已弃用。
应该使用getInstance(Instrumentation)
来代替。 该版本隐藏了UiDevice对具有Instrumentation引用的依赖性,并且容易被误用。
检索UiDevice的单例实例
Returns | |
---|---|
UiDevice |
UiDevice instance |
UiDevice getInstance (Instrumentation instrumentation)
检索UiDevice的单例实例
Parameters | |
---|---|
instrumentation |
Instrumentation
|
Returns | |
---|---|
UiDevice |
UiDevice instance |
String getLastTraversedText ()
从接收到的最后一次UI遍历事件中检索文本。 您可以使用此方法读取WebView容器中的内容,因为辅助功能框架会在每个文本突出显示时触发事件。 您可以编写一个测试来执行方向箭头按钮,以关注WebView中的不同元素,并调用此方法从每个遍历元素中获取文本。 如果您正在测试可以返回对文档对象模型(DOM)对象的引用的视图容器,则测试应该使用视图的DOM。
Returns | |
---|---|
String |
text of the last traversal event, else return an empty string |
String getLauncherPackageName ()
检索默认启动程序包名称
Returns | |
---|---|
String |
package name of the default launcher |
String getProductName ()
检索设备的产品名称。 此方法提供有关运行测试的设备类型的信息。 该值与通过调用#adb shell getprop ro.product.name返回的值相同。
Returns | |
---|---|
String |
product name of the device |
boolean hasAnyWatcherTriggered ()
检查是否有注册的UiWatcher
已经触发。 见registerWatcher(String, UiWatcher)
见hasWatcherTriggered(String)
Returns | |
---|---|
boolean |
boolean hasObject (BySelector selector)
返回给定的 selector
条件是否匹配。
Parameters | |
---|---|
selector |
BySelector
|
Returns | |
---|---|
boolean |
boolean hasWatcherTriggered (String watcherName)
检查特定注册的UiWatcher
是否已触发。 见registerWatcher(String, UiWatcher)
。 如果UiWatcher运行并且其checkForCondition()
调用返回true
,则认为UiWatcher被触发。 如果观察者检测到来自ANR或崩溃对话框的错误并且测试需要知道UiWatcher是否被触发,这很有用。
Returns | |
---|---|
boolean |
true if triggered else false |
boolean isNaturalOrientation ()
检查设备是否处于其自然方向。 这是通过检查方向是在0还是180度来确定的。
Returns | |
---|---|
boolean |
true if it is in natural orientation |
boolean isScreenOn ()
如果屏幕处于开启状态,则检查电源管理器。
Returns | |
---|---|
boolean |
true if the screen is ON else false |
Throws | |
---|---|
|
RemoteException |
RemoteException |
boolean openNotification ()
打开通知栏。
Returns | |
---|---|
boolean |
true if successful, else return false |
boolean openQuickSettings ()
打开快速设置阴影。
Returns | |
---|---|
boolean |
true if successful, else return false |
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. |
boolean pressBack ()
模拟BACK按钮上的短按。
Returns | |
---|---|
boolean |
true if successful, else return false |
boolean pressDPadCenter ()
模拟CENTER按钮上的短按。
Returns | |
---|---|
boolean |
true if successful, else return false |
boolean pressDPadDown ()
在DOWN按钮上模拟短按。
Returns | |
---|---|
boolean |
true if successful, else return false |
boolean pressDPadLeft ()
模拟LEFT按钮上的短按。
Returns | |
---|---|
boolean |
true if successful, else return false |
boolean pressDPadRight ()
模拟RIGHT按钮上的短按。
Returns | |
---|---|
boolean |
true if successful, else return false |
boolean pressDPadUp ()
模拟UP按钮上的短按。
Returns | |
---|---|
boolean |
true if successful, else return false |
boolean pressDelete ()
在DELETE键上模拟一个短按。
Returns | |
---|---|
boolean |
true if successful, else return false |
boolean pressEnter ()
按下ENTER键模拟一个短按。
Returns | |
---|---|
boolean |
true if successful, else return false |
boolean pressHome ()
模拟HOME按钮上的短按。
Returns | |
---|---|
boolean |
true if successful, else return false |
boolean pressKeyCode (int keyCode)
使用键码模拟短按。 见KeyEvent
Parameters | |
---|---|
keyCode |
int
|
Returns | |
---|---|
boolean |
true if successful, else return false |
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 |
boolean pressMenu ()
模拟MENU按钮上的短按。
Returns | |
---|---|
boolean |
true if successful, else return false |
boolean pressRecentApps ()
模拟Recent Apps按钮上的短按。
Returns | |
---|---|
boolean |
true if successful, else return false |
Throws | |
---|---|
|
RemoteException |
RemoteException |
boolean pressSearch ()
模拟SEARCH按钮上的短按。
Returns | |
---|---|
boolean |
true if successful, else return false |
void registerWatcher (String name, UiWatcher watcher)
注册UiWatcher
以在测试框架无法使用UiSelector
找到匹配项时自动运行。 见runWatchers()
Parameters | |
---|---|
name |
String : to register the UiWatcher |
watcher |
UiWatcher : UiWatcher |
void removeWatcher (String name)
删除以前注册的UiWatcher
。 见registerWatcher(String, UiWatcher)
Parameters | |
---|---|
name |
String : used to register the UiWatcher |
void resetWatcherTriggers ()
重置已触发的UiWatcher
。 如果UiWatcher运行并且其checkForCondition()
调用返回true
,则认为UiWatcher被触发。 见registerWatcher(String, UiWatcher)
void setCompressedLayoutHeirarchy (boolean compressed)
启用或禁用布局层次结构压缩。 如果启用了压缩,则从可访问框架派生的布局分层结构将只包含对uiautomator测试非常重要的节点。 任何不必要的周边布局节点都会使查看和搜索层次结构效率低下。
Parameters | |
---|---|
compressed |
boolean : true to enable compression; else, false to disable |
void setOrientationLeft ()
模拟将设备定向到左侧,并通过禁用传感器来冻结旋转。 如果您想取消冻结旋转并重新启用传感器,请参阅unfreezeRotation()
。
Throws | |
---|---|
|
RemoteException |
RemoteException |
void setOrientationNatural ()
模拟将设备定向到其自然方向,并通过禁用传感器来冻结旋转。 如果您想取消冻结旋转并重新启用传感器,请参阅unfreezeRotation()
。
Throws | |
---|---|
|
RemoteException |
RemoteException |
void setOrientationRight ()
模拟将设备定向到右侧,并通过禁用传感器来冻结旋转。 如果您想要冻结旋转并重新启用传感器,请参阅unfreezeRotation()
。
Throws | |
---|---|
|
RemoteException |
RemoteException |
void sleep ()
如果屏幕开启,此方法只需按下电源按钮,否则,如果屏幕已关闭,则不执行任何操作。
Throws | |
---|---|
|
RemoteException |
RemoteException |
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 |
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 |
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 |
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 |
void unfreezeRotation ()
重新启用传感器并取消冻结设备旋转,从而允许其内容随设备物理旋转而旋转。 在测试执行期间,最好将设备冻结在特定方向,直到测试用例执行完成。
Throws | |
---|---|
RemoteException |
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. |
void waitForIdle (long timeout)
等待当前应用程序闲置。
Parameters | |
---|---|
timeout |
long : in milliseconds |
void waitForIdle ()
等待当前应用程序闲置。 默认等待超时时间为10秒
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 |
void wakeUp ()
如果屏幕关闭,此方法模拟按电源按钮,否则,如果屏幕已打开,则不执行任何操作。 如果屏幕处于关闭状态并刚打开,则此方法会插入500毫秒的延迟时间,以允许设备唤醒并接受输入。
Throws | |
---|---|
|
RemoteException |
RemoteException |