adbkit-monkey provides a Node.js interface for working with the Android monkey
tool. Albeit undocumented, they monkey program can be started in TCP mode with the --port
argument. In this mode, it accepts a range of commands that can be used to interact with the UI in a non-random manner. This mode is also used internally by the monkeyrunner
tool, although the documentation claims no relation to the monkey tool.
Install via NPM:
npm install --save @warren-bank/adb-monkey
The following examples assume that monkey is already running (via adb shell monkey --port 1080
) and a port forwarding (adb forward tcp:1080 tcp:1080
) has been set up.
var assert = require('assert');
var monkey = require('@warren-bank/adb-monkey');
var client = monkey.connect({ port: 1080 });
client.press(3 /* KEYCODE_HOME */, function(err) {
assert.ifError(err);
console.log('Pressed home button');
client.end();
});
var assert = require('assert');
var monkey = require('@warren-bank/adb-monkey');
var client = monkey.connect({ port: 1080 });
client.multi()
.touchDown(100, 0)
.sleep(5)
.touchMove(100, 20)
.sleep(5)
.touchMove(100, 40)
.sleep(5)
.touchMove(100, 60)
.sleep(5)
.touchMove(100, 80)
.sleep(5)
.touchMove(100, 100)
.sleep(5)
.touchUp(100, 100)
.sleep(5)
.execute(function(err) {
assert.ifError(err);
console.log('Dragged out the notification bar');
client.end();
});
var assert = require('assert');
var monkey = require('@warren-bank/adb-monkey');
var client = monkey.connect({ port: 1080 });
client.getDisplayWidth(function(err, width) {
assert.ifError(err);
client.getDisplayHeight(function(err, height) {
assert.ifError(err);
console.log('Display size is %dx%d', width, height);
client.end();
});
});
Note that you should manually focus a text field first.
var assert = require('assert');
var monkey = require('@warren-bank/adb-monkey');
var client = monkey.connect({ port: 1080 });
client.type('hello monkey!', function(err) {
assert.ifError(err);
console.log('Said hello to monkey');
client.end();
});
Uses Net.connect() to open a new TCP connection to monkey. Useful when combined with adb forward
.
- options Any options
Net.connect()
accepts. - Returns: A new monkey
Client
instance.
Attaches a monkey client to an existing monkey protocol stream.
- stream The monkey protocol
Stream
. - Returns: A new monkey
Client
instance.
Implements Api
. See below for details.
The following events are available:
- error (err) Emitted when an error occurs.
- err An
Error
.
- err An
- end Emitted when the stream ends.
- finish Emitted when the stream finishes.
Ends the underlying stream/connection.
- Returns: The
Client
instance.
Returns a new API wrapper that buffers commands for simultaneous delivery instead of sending them individually. When used with api.sleep()
, allows simple gestures to be executed.
- Returns: A new
Multi
instance. SeeMulti
below.
Sends a raw protocol command to monkey.
- command The command to send. When
String
, a single command is sent. WhenArray
, a series of commands is sent at once. - callback(err, value, command) Called when monkey responds to the command. If multiple commands were sent, the callback will be called once for each command.
- err
null
when successful,Error
otherwise. - value The response value, if any.
- command The command the response is for.
- err
- Returns: The
Client
instance.
The monkey API implemented by Client
and Multi
.
Closes the current monkey session and allows a new session to connect.
- callback(err) Called when monkey responds.
- err
null
when successful,Error
otherwise.
- err
- Returns: The
Api
implementation instance.
Simulates closing the keyboard.
- callback(err) Called when monkey responds.
- err
null
when successful,Error
otherwise.
- err
- Returns: The
Api
implementation instance.
Simulates opening the keyboard.
- callback(err) Called when monkey responds.
- err
null
when successful,Error
otherwise.
- err
- Returns: The
Api
implementation instance.
Gets the value of a variable. Use api.list()
to retrieve a list of supported variables.
- name The name of the variable.
- callback(err, value) Called when monkey responds.
- err
null
when successful,Error
otherwise. - value The value of the variable.
- err
- Returns: The
Api
implementation instance.
Alias for api.get('am.current.action', callback)
.
Alias for api.get('am.current.categories', callback)
.
Alias for api.get('am.current.comp.class', callback)
.
Alias for api.get('am.current.comp.package', callback)
.
Alias for api.get('am.current.data', callback)
.
Alias for api.get('am.current.package', callback)
.
Alias for api.get('build.board', callback)
.
Alias for api.get('build.brand', callback)
.
Alias for api.get('build.cpu_abi', callback)
.
Alias for api.get('build.device', callback)
.
Alias for api.get('build.display', callback)
.
Alias for api.get('build.fingerprint', callback)
.
Alias for api.get('build.host', callback)
.
Alias for api.get('build.id', callback)
.
Alias for api.get('build.manufacturer', callback)
.
Alias for api.get('build.model', callback)
.
Alias for api.get('build.product', callback)
.
Alias for api.get('build.tags', callback)
.
Alias for api.get('build.type', callback)
.
Alias for api.get('build.user', callback)
.
Alias for api.get('build.version.codename', callback)
.
Alias for api.get('build.version.incremental', callback)
.
Alias for api.get('build.version.release', callback)
.
Alias for api.get('build.version.sdk', callback)
.
Alias for api.get('clock.millis', callback)
.
Alias for api.get('clock.realtime', callback)
.
Alias for api.get('clock.uptime', callback)
.
Alias for api.get('display.density', callback)
.
Alias for api.get('display.height', callback)
. Note that the height may exclude any virtual home button row.
Alias for api.get('display.width', callback)
.
Sends a key down event. Should be coupled with api.keyUp()
. Note that api.press()
performs the two events automatically.
- keyCode The key code. All monkeys support numeric keycodes, and some support automatic conversion from key names to key codes (e.g.
'home'
toKEYCODE_HOME
). This will not work for number keys however. The most portable method is to simply use numeric key codes. - callback(err) Called when monkey responds.
- err
null
when successful,Error
otherwise.
- err
- Returns: The
Api
implementation instance.
Sends a key up event. Should be coupled with api.keyDown()
. Note that api.press()
performs the two events automatically.
- keyCode See
api.keyDown()
. - callback(err) Called when monkey responds.
- err
null
when successful,Error
otherwise.
- err
- Returns: The
Api
implementation instance.
Lists supported variables.
- callback(err, vars) Called when monkey responds.
- err
null
when successful,Error
otherwise. - vars An array of supported variable names, to be used with
api.get()
.
- err
- Returns: The
Api
implementation instance.
Sends a key press event.
- keyCode See
api.keyDown()
. - callback(err) Called when monkey responds.
- err
null
when successful,Error
otherwise.
- err
- Returns: The
Api
implementation instance.
Closes the current monkey session and quits monkey.
- callback(err) Called when monkey responds.
- err
null
when successful,Error
otherwise.
- err
- Returns: The
Api
implementation instance.
Sleeps for the given duration. Can be useful for simulating gestures.
- ms How many milliseconds to sleep for.
- callback(err) Called when monkey responds.
- err
null
when successful,Error
otherwise.
- err
- Returns: The
Api
implementation instance.
Taps the given coordinates.
- x The x coordinate.
- y The y coordinate.
- callback(err) Called when monkey responds.
- err
null
when successful,Error
otherwise.
- err
- Returns: The
Api
implementation instance.
Sends a touch down event on the given coordinates.
- x The x coordinate.
- y The y coordinate.
- callback(err) Called when monkey responds.
- err
null
when successful,Error
otherwise.
- err
- Returns: The
Api
implementation instance.
Sends a touch move event on the given coordinates.
- x The x coordinate.
- y The y coordinate.
- callback(err) Called when monkey responds.
- err
null
when successful,Error
otherwise.
- err
- Returns: The
Api
implementation instance.
Sends a touch up event on the given coordinates.
- x The x coordinate.
- y The y coordinate.
- callback(err) Called when monkey responds.
- err
null
when successful,Error
otherwise.
- err
- Returns: The
Api
implementation instance.
Sends a trackball event on the given coordinates.
- x The x coordinate.
- y The y coordinate.
- callback(err) Called when monkey responds.
- err
null
when successful,Error
otherwise.
- err
- Returns: The
Api
implementation instance.
Types the given text.
- text A text
String
. Note that only characters for which key codes exist can be entered. Also note that any IME in use may or may not transform the text. - callback(err) Called when monkey responds.
- err
null
when successful,Error
otherwise.
- err
- Returns: The
Api
implementation instance.
Wakes the device from sleep and allows user input.
- callback(err) Called when monkey responds.
- err
null
when successful,Error
otherwise.
- err
- Returns: The
Api
implementation instance.
Buffers Api
commands and delivers them simultaneously for greater control over timing.
Implements all Api
methods, but without the last callback
parameter.
Sends all buffered commands.
- callback(err, values) Called when monkey has responded to all commands (i.e. just once at the end).
- err
null
when successful,Error
otherwise. - values An array of all response values, identical to individual
Api
responses.
- err
See LICENSE.
Copyright © CyberAgent, Inc. All Rights Reserved.