xiaocong / uiautomator

Python wrapper of Android uiautomator test tool.
MIT License
2.02k stars 638 forks source link

uiautomator

Join the chat at https://gitter.im/xiaocong/uiautomator

MIT License build Coverage Status pypi downloads

This module is a Python wrapper of Android uiautomator testing framework. It works on Android 4.1+ (API Level 16~30) simply with Android device attached via adb, no need to install anything on Android device.

from uiautomator import device as d

d.screen.on()
d(text="Clock").click()

Installation

$ pip install uiautomator

Pre-requirements

import uiautomator


Notes: In below examples, we use d represent the android device object.

Table of Contents

Basic API Usages

Watcher introduction

Handler introduction

Selector introduction

Basic API Usages

This part show the normal actions of the device through some simple examples.

Key Event Actions of the device

Gesture interaction of the device

Screen Actions of the device

Watcher

You can register watcher to perform some actions when a selector can not find a match.

Handler

The functionality of handler is same as Watcher, except it is implemented ourside of Android uiautomator. The most different usage between handler and watcher is, handler can use customized callback function.

def fc_close(device):
  if device(text='Force Close').exists:
    device(text='Force Close').click()
  return True  # return True means to break the loop of handler callback functions.

# turn on the handler callback function
d.handlers.on(fc_close)

# turn off the handler callback function
d.handlers.off(fc_close)

Selector

Selector is to identify specific ui object in current window.

# To seleted the object ,text is 'Clock' and its className is 'android.widget.TextView'
d(text='Clock', className='android.widget.TextView')

Selector supports below parameters. Refer to UiSelector java doc for detailed information.

Child and sibling UI object

Get the selected ui object status and its information

Perform the click action on the seleted ui object

Gesture action for the specific ui object


Contribution

Contributors

Issues & Discussion

If you have any bug reports or annoyances please report them to our issue tracker at github issues.

Notes

FAQ

License

MIT