Skip to content
Sravan Medarapu edited this page Oct 26, 2016 · 40 revisions

Welcome to the appium-uiautomator2-server wiki!

  • appium-uiautomator2-server module is targeted to re implement appium-android-bootstrap's bootstrap module using Google's UIAutomator V2 API.

  • appium-android-bootstrap built on top of Google's UIAutomator v1 and Google's UIAutomator v1 API is broken and officially depreciated now.

  • Google UIAutomator v2 fixes most of the problems in v1. The most important difference is decoupling the upgrade process of the framework from the underlying Android OS.

Prerequisites: This module should support from Android 5.0 (API Level 20) and above

Usage: From Appium server it is requested by specifying the desired capability automationName as uiautomator2 when starting a session.

How It works ?

When client request to create a new AndroidDriver session, client passes desired capabilities to the appium node server. Based on the automationName property in the desired capabilities, appium redirects to the corresponding driver module (by default appium passes to appium-android-driver on the absence of automationName)

If the automationName is uiautomator2 then appium redirects to appium-uiautomator2-driver to create the new session.

UIAutomator2 Driver Module: Creates the session , installs the appium uiautomtor2 server apks on the device, starts the server(Netty) and initiates a Netty server session.

UIAutomator2 Server Module: Once Netty server session initiated by driver module, server continues to listen on device for requests and responds accordingly until DELETE SESSION gets invoked.

Behavioral Changes with respect to existing appium android driver(bootstrap):

  • As per the new implementation of google's UI Automator v2 whenever there is a change in the current UI view, always recommended to re finding the element(using findElement) instead of referring already created element.
  • Referring to existing element may either throws StaleObjectException or returns irrelevant element.

Index for other sections: