java.lang.Object | |
↳ | android.app.UiAutomation |
Class for interacting with the device's UI by simulation user actions and
introspection of the screen content. It relies on the platform accessibility
APIs to introspect the screen and to perform some actions on the remote view
tree. It also allows injecting of arbitrary raw input events simulating user
interaction with keyboards and touch devices. One can think of a UiAutomation
as a special type of
AccessibilityService
which does not provide hooks for the service life cycle and exposes other
APIs that are useful for UI test automation.
The APIs exposed by this class are low-level to maximize flexibility when
developing UI test automation tools and libraries. Generally, a UiAutomation
client should be using a higher-level library or implement high-level functions.
For example, performing a tap on the screen requires construction and injecting
of a touch down and up events which have to be delivered to the system by a
call to
injectInputEvent(InputEvent, boolean)
.
The APIs exposed by this class operate across applications enabling a client to write tests that cover use cases spanning over multiple applications. For example, going to the settings application to change a setting and then interacting with another application whose behavior depends on that setting.
Nested Classes | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
|
UiAutomation.AccessibilityEventFilter | Listener for filtering accessibility events. | |||||||||
|
UiAutomation.OnAccessibilityEventListener |
Listener for observing the
AccessibilityEvent
stream.
|
Constants | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
int | ROTATION_FREEZE_0 | Rotation constant: Freeze rotation to 0 degrees (natural orientation) | |||||||||
int | ROTATION_FREEZE_180 | Rotation constant: Freeze rotation to 180 degrees . | |||||||||
int | ROTATION_FREEZE_270 | Rotation constant: Freeze rotation to 270 degrees . | |||||||||
int | ROTATION_FREEZE_90 | Rotation constant: Freeze rotation to 90 degrees . | |||||||||
int | ROTATION_FREEZE_CURRENT | Rotation constant: Freeze rotation to its current state. | |||||||||
int | ROTATION_UNFREEZE | Rotation constant: Unfreeze rotation (rotating the device changes its rotation state). |
Public Methods | |||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
|
Executes a command and waits for a specific accessibility event up to a
given wait timeout.
|
||||||||||
|
Gets the root
AccessibilityNodeInfo
in the active window.
|
||||||||||
|
Gets the an
AccessibilityServiceInfo
describing this UiAutomation.
|
||||||||||
|
A method for injecting an arbitrary input event.
|
||||||||||
|
Performs a global action.
|
||||||||||
|
Sets a callback for observing the stream of
AccessibilityEvent
s.
|
||||||||||
|
Sets the device rotation.
|
||||||||||
|
Sets whether this UiAutomation to run in a "monkey" mode.
|
||||||||||
|
Sets the
AccessibilityServiceInfo
that describes how this
UiAutomation will be handled by the platform accessibility layer.
|
||||||||||
|
Takes a screenshot.
|
||||||||||
|
Waits for the accessibility event stream to become idle, which is not to
have received an accessibility event within
idleTimeoutMillis
.
|
[Expand]
Inherited Methods
|
|||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|
From class
java.lang.Object
|
Rotation constant: Freeze rotation to 0 degrees (natural orientation)
Rotation constant: Freeze rotation to 180 degrees .
Rotation constant: Freeze rotation to 270 degrees .
Rotation constant: Freeze rotation to 90 degrees .
Rotation constant: Freeze rotation to its current state.
Rotation constant: Unfreeze rotation (rotating the device changes its rotation state).
Executes a command and waits for a specific accessibility event up to a given wait timeout. To detect a sequence of events one can implement a filter that keeps track of seen events of the expected sequence and returns true after the last event of that sequence is received.
Note: It is caller's responsibility to recycle the returned event.
command | The command to execute. |
---|---|
filter | Filter that recognizes the expected event. |
timeoutMillis | The wait timeout in milliseconds. |
TimeoutException | If the expected event is not received within the timeout. |
---|
Gets the root
AccessibilityNodeInfo
in the active window.
Gets the an
AccessibilityServiceInfo
describing this UiAutomation.
This method is useful if one wants to change some of the dynamically
configurable properties at runtime.
A method for injecting an arbitrary input event.
Note: It is caller's responsibility to recycle the event.
event | The event to inject. |
---|---|
sync | Whether to inject the event synchronously. |
Performs a global action. Such an action can be performed at any moment regardless of the current application or user location in that application. For example going back, going home, opening recents, etc.
action | The action to perform. |
---|
Sets a callback for observing the stream of
AccessibilityEvent
s.
listener | The callback. |
---|
Sets the device rotation. A client can freeze the rotation in desired state or freeze the rotation to its current state or unfreeze the rotation (rotating the device changes its rotation state).
rotation | The desired rotation. |
---|
Sets whether this UiAutomation to run in a "monkey" mode. Applications can query whether they are executed in a "monkey" mode, i.e. run by a test framework, and avoid doing potentially undesirable actions such as calling 911 or posting on public forums etc.
enable | whether to run in a "monkey" mode or not. Default is not. |
---|
Sets the
AccessibilityServiceInfo
that describes how this
UiAutomation will be handled by the platform accessibility layer.
info | The info. |
---|
Takes a screenshot.
Waits for the accessibility event stream to become idle, which is not to
have received an accessibility event within
idleTimeoutMillis
.
The total time spent to wait for an idle accessibility event stream is bounded
by the
globalTimeoutMillis
.
idleTimeoutMillis | The timeout in milliseconds between two events to consider the device idle. |
---|---|
globalTimeoutMillis | The maximal global timeout in milliseconds in which to wait for an idle state. |
TimeoutException |
If no idle state was detected within
globalTimeoutMillis.
|
---|