Giter Site home page Giter Site logo

onesbyones / appium-android-bootstrap Goto Github PK

View Code? Open in Web Editor NEW

This project forked from appium-boneyard/appium-android-bootstrap

1.0 0.0 0.0 2.67 MB

Npm module for androidBootstrap, the java project which appium uses to interact with UiAutomator

License: Other

Java 99.69% JavaScript 0.31%

appium-android-bootstrap's Introduction

appium-android-bootstrap

NPM version Downloads Dependency Status devDependency Status

Build Status Coverage Status Greenkeeper badge

JavaScript interface, and Java code, for interacting with Android UI Automator. The system allows ad hoc commands to be sent to the device, which are executed using Android's UIAutomator testing framework.

Technical details

The system works by a com.android.uiautomator.testrunner.UiAutomatorTestCase placed on the Android device, which opens a SocketServer on port 4724. This server receives commands, converts them to appropriate Android UI Automator commands, and runs them in the context of the device.

The commands are sent through the JavaScript interface.

Usage

The module provides an AndroidBootstrap class, which is instantiated with an instance of appium-adb, a system port (defaults to 4724) and an optional web socket. The object then has four async methods:

async start (appPackage, disableAndroidWatchers)

Uses Appium's UI Automator interface to install the test case, and sets up socket communication.

  • appPackage - The package name for the application under test (e.g., 'com.example.android.apis').
  • disableAndroidWatchers - Whether or not to watch Android events. Defaults to false.
import AndroidBootstrap from 'appium-android-bootstrap';

let androidBootstrap = new AndroidBootstrap();
await androidBootstrap.start('com.example.android.apis', false);

async shutdown ()

Shuts down all services. Stops UI Automator process on device, and kills communication.

await androidBootstrap.shutdown();

async sendCommand (type, extra, cmdTimeout)

Send a command to the device.

  • type - The type of command being sent. The two valid types are action and shutdown. These are exported as the enumeration COMMAND_TYPES
  • extra - A hash of extra parameters to send to the device.
  • cmdTimeout - The amount of time, in ms, to wait for the device to respond. Defaults to 10000.
let dataDir = await androidBootstrap.sendCommand(COMMAND_TYPES.ACTION, {action: 'getDataDir'});
// dataDir === '/data'

async sendAction (action, params)

Send an action command to the device. Equavalent to sendCommand ('action', {action: action, params: params}).

  • action - The action to be sent.
  • params - Parameters for the action.
let dataDir = await androidBootstrap.sendAction('getDataDir');
// dataDir === '/data'

COMMAND_TYPES

An enumeration of the available types of commands, to be used for sendCommand. The members are ACTION, and SHUTDOWN.

Development

Building the Bootstrap Jar

This package builds with an older version of the Android tools, using ant.

To build the Java system, make sure ant is installed.

In order to have both the current Android tools and the ones needed for this package, do the following:

  1. Copy your $ANDROID_HOME directory (where the Android SDK is installed) to another location.
  2. Download the Android 22 tools
  3. Replace the tools directory in the copied Android SDK directory with the Android 22 tools just downloaded
  4. Create/edit bootstrap/local.properties file, adding
    • sdk.dir=/path/to/copied/android/sdk

Now you should be able to build the Jar file by running

npm run build:jar

Watch

npm run watch

Test

npm run test
npm run e2e-test

appium-android-bootstrap's People

Contributors

imurchie avatar jlipps avatar jonahss avatar moizjv avatar scottdixon avatar vania-pooh avatar robot-bucket avatar ironlung7 avatar ngsankha avatar ssynix avatar tiagoshibata avatar tcnh avatar christian-bromann avatar cool-firer avatar greenkeeper[bot] avatar vmaxim avatar

Stargazers

WuKong avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.