46 lines
1.9 KiB
Markdown
46 lines
1.9 KiB
Markdown
# UIAutomator Snippet Example
|
|
|
|
This example shows you how to create snippets that control the UI of a device
|
|
across system and multiple app views using UIAutomator. Unlike Espresso-based
|
|
UI automation, it does not require access to app source code.
|
|
|
|
This snippet is written as a [standalone snippet](../ex1_standalone_app/README.md)
|
|
and does not target another app. In particular, it doesn't need to target the
|
|
app under test, so it doesn't need its classpath or to be signed with the same
|
|
key.
|
|
|
|
See the [Espresso snippet tutorial](../ex2_espresso/README.md) for more
|
|
information about the app this example automates.
|
|
|
|
## Running the example code
|
|
|
|
This folder contains a fully working example of a snippet apk that uses
|
|
UIAutomator to automate a simple app.
|
|
|
|
1. Compile the main app and automation. The main app of ex2 (espresso) is used
|
|
as the app to automate. Unlike espresso, the uiautomator test does not
|
|
depend on this apk and does not use its source or classpath, so you must
|
|
compile and install the app separately.
|
|
|
|
./gradlew examples:ex2_espresso:assembleDebug examples:ex4_uiautomator:assembleDebug
|
|
|
|
1. Install the apks on your phone
|
|
|
|
adb install -r ./examples/ex2_espresso/build/outputs/apk/debug/ex2_espresso-main-debug.apk
|
|
adb install -r ./examples/ex4_uiautomator/build/outputs/apk/debug/ex4_uiautomator-debug.apk
|
|
|
|
1. Use `snippet_shell` from mobly to trigger `pushMainButton()`:
|
|
|
|
snippet_shell.py com.google.android.mobly.snippet.example4
|
|
|
|
>>> print(s.help())
|
|
Known methods:
|
|
pushMainButton(boolean) returns void // Pushes the main app button, and checks the label if this is the first time.
|
|
startMainActivity() returns void // Opens the main activity of the app
|
|
uiautomatorDump() returns String // Perform a UIAutomator dump
|
|
|
|
>>> s.startMainActivity()
|
|
>>> s.pushMainButton(True)
|
|
|
|
1. Press ctrl+d to exit the shell and terminate the app.
|