# 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.