Skip to content
Permalink
master
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
category / JsonWireProtocol method wd methods
GET /status
Query the server's current status.
status(cb) -> cb(err, status)
POST /session
Create a new session.
init(desired, cb) -> cb(err, sessionID, capabilities)
Initialize the browser. capabilities return may be
absent, depending on driver.
GET /sessions
Returns a list of the currently active sessions.

sessions(cb) -> cb(err, sessions)

Alternate strategy to get session capabilities from server session list:
altSessionCapabilities(cb) -> cb(err, capabilities)

GET /session/:sessionId
Retrieve the capabilities of the specified session.
sessionCapabilities(cb) -> cb(err, capabilities)
DELETE /session/:sessionId
Delete the session.
quit(cb) -> cb(err)
Destroy the browser.
POST /session/:sessionId/timeouts
Configure the amount of time that a particular type of operation can execute for before they are aborted and a |Timeout| error is returned to the client.

setPageLoadTimeout(ms, cb) -> cb(err)
(use setImplicitWaitTimeout and setAsyncScriptTimeout to set the other timeouts)

setCommandTimeout(ms, cb) -> cb(err)
(this is for Appium only)

POST /session/:sessionId/timeouts/async_script
Set the amount of time, in milliseconds, that asynchronous scripts executed by /session/:sessionId/execute_async are permitted to run before they are aborted and a |Timeout| error is returned to the client.
setAsyncScriptTimeout(ms, cb) -> cb(err)
POST /session/:sessionId/timeouts/implicit_wait
Set the amount of time the driver should wait when searching for elements.
setImplicitWaitTimeout(ms, cb) -> cb(err)
GET /session/:sessionId/window_handle
Retrieve the current window handle.
windowHandle(cb) -> cb(err, handle)
GET /session/:sessionId/window_handles
Retrieve the list of all window handles available to the session.
windowHandles(cb) -> cb(err, arrayOfHandles)
GET /session/:sessionId/url
Retrieve the URL of the current page.
url(cb) -> cb(err, url)
POST /session/:sessionId/url
Navigate to a new URL.
get(url,cb) -> cb(err)
Get a new url.
POST /session/:sessionId/forward
Navigate forwards in the browser history, if possible.
forward(cb) -> cb(err)
POST /session/:sessionId/back
Navigate backwards in the browser history, if possible.
back(cb) -> cb(err)
POST /session/:sessionId/refresh
Refresh the current page.
refresh(cb) -> cb(err)
POST /session/:sessionId/execute
Inject a snippet of JavaScript into the page for execution in the context of the currently selected frame.

execute(code, args, cb) -> cb(err, result)
execute(code, cb) -> cb(err, result)
args: script argument array (optional)

Safely execute script within an eval block, always returning:
safeExecute(code, args, cb) -> cb(err, result)
safeExecute(code, cb) -> cb(err, result)
args: script argument array (optional)

Evaluate expression (using execute):
eval(code, cb) -> cb(err, value)

Safely evaluate expression, always returning (using safeExecute):
safeEval(code, cb) -> cb(err, value)

POST /session/:sessionId/execute_async
Inject a snippet of JavaScript into the page for execution in the context of the currently selected frame.

executeAsync(code, args, cb) -> cb(err, result)
executeAsync(code, cb) -> cb(err, result)
args: script argument array (optional)

Safely execute async script within an eval block, always returning:
safeExecuteAsync(code, args, cb) -> cb(err, result)
safeExecuteAsync(code, cb) -> cb(err, result)
args: script argument array (optional)

GET /session/:sessionId/screenshot
Take a screenshot of the current page.
takeScreenshot(cb) -> cb(err, screenshot)
GET /session/:sessionId/ime/available_engines
List all available engines on the machine.
availableIMEEngines(cb) -> cb(err, engines)
GET /session/:sessionId/ime/active_engine
Get the name of the active IME engine.
activeIMEEngine(cb) -> cb(err, activeEngine)
GET /session/:sessionId/ime/activated
Indicates whether IME input is active at the moment (not if it's available).
activatedIMEEngine(cb) -> cb(err, active)
POST /session/:sessionId/ime/deactivate
De-activates the currently-active IME engine.
deactivateIMEEngine(cb) -> cb(err)
POST /session/:sessionId/ime/activate
Make an engines that is available (appears on the listreturned by getAvailableEngines) active.
activateIMEEngine(cb, engine) -> cb(err)
POST /session/:sessionId/frame
Change focus to another frame on the page.
frame(frameRef, cb) -> cb(err)
POST /session/:sessionId/window
Change focus to another window.
window(name, cb) -> cb(err)
DELETE /session/:sessionId/window
Close the current window.
close(cb) -> cb(err)
POST /session/:sessionId/window/:windowHandle/size
Change the size of the specified window.

windowSize(handle, width, height, cb) -> cb(err)

setWindowSize(width, height, handle, cb) -> cb(err)
setWindowSize(width, height, cb) -> cb(err)
width: width in pixels to set size to
height: height in pixels to set size to
handle: window handle to set size for (optional, default: 'current')

GET /session/:sessionId/window/:windowHandle/size
Get the size of the specified window.
getWindowSize(handle, cb) -> cb(err, size)
getWindowSize(cb) -> cb(err, size)
handle: window handle to get size (optional, default: 'current')
POST /session/:sessionId/window/:windowHandle/position
Change the position of the specified window.
setWindowPosition(x, y, handle, cb) -> cb(err)
setWindowPosition(x, y, cb) -> cb(err)
x: the x-coordinate in pixels to set the window position
y: the y-coordinate in pixels to set the window position
handle: window handle to set position for (optional, default: 'current')
GET /session/:sessionId/window/:windowHandle/position
Get the position of the specified window.
getWindowPosition(handle, cb) -> cb(err, position)
getWindowPosition(cb) -> cb(err, position)
handle: window handle to get position (optional, default: 'current')
POST /session/:sessionId/window/:windowHandle/maximize
Maximize the specified window if not already maximized.
maximize(handle, cb) -> cb(err)
GET /session/:sessionId/cookie
Retrieve all cookies visible to the current page.
allCookies() -> cb(err, cookies)
POST /session/:sessionId/cookie
Set a cookie.
setCookie(cookie, cb) -> cb(err)
cookie example:
{name:'fruit', value:'apple'}
Optional cookie fields:
path, domain, secure, expiry
DELETE /session/:sessionId/cookie
Delete all cookies visible to the current page.
deleteAllCookies(cb) -> cb(err)
DELETE /session/:sessionId/cookie/:name
Delete the cookie with the given name.
deleteCookie(name, cb) -> cb(err)
GET /session/:sessionId/source
Get the current page source.
source(cb) -> cb(err, source)
GET /session/:sessionId/title
Get the current page title.
title(cb) -> cb(err, title)
POST /session/:sessionId/element
Search for an element on the page, starting from the document root.

element(using, value, cb) -> cb(err, element)

elementByClassName(value, cb) -> cb(err, element)
elementByCssSelector(value, cb) -> cb(err, element)
elementById(value, cb) -> cb(err, element)
elementByName(value, cb) -> cb(err, element)
elementByLinkText(value, cb) -> cb(err, element)
elementByPartialLinkText(value, cb) -> cb(err, element)
elementByTagName(value, cb) -> cb(err, element)
elementByXPath(value, cb) -> cb(err, element)
elementByCss(value, cb) -> cb(err, element)
elementByIosUIAutomation(value, cb) -> cb(err, element)
elementByIosClassChain(value, cb) -> cb(err, element)
elementByAndroidUIAutomator(value, cb) -> cb(err, element)
elementByAccessibilityId(value, cb) -> cb(err, element)

POST /session/:sessionId/elements
Search for multiple elements on the page, starting from the document root.

elements(using, value, cb) -> cb(err, elements)

elementsByClassName(value, cb) -> cb(err, elements)
elementsByCssSelector(value, cb) -> cb(err, elements)
elementsById(value, cb) -> cb(err, elements)
elementsByName(value, cb) -> cb(err, elements)
elementsByLinkText(value, cb) -> cb(err, elements)
elementsByPartialLinkText(value, cb) -> cb(err, elements)
elementsByTagName(value, cb) -> cb(err, elements)
elementsByXPath(value, cb) -> cb(err, elements)
elementsByCss(value, cb) -> cb(err, elements)
elementsByIosUIAutomation(value, cb) -> cb(err, elements)
elementsByIosClassChain(value, cb) -> cb(err, elements)
elementsByIosPredicateString(value, cb) -> cb(err, elements)
elementsByAndroidUIAutomator(value, cb) -> cb(err, elements)
elementsByAccessibilityId(value, cb) -> cb(err, elements)

Retrieve an element avoiding not found exception and returning null instead:
elementOrNull(using, value, cb) -> cb(err, element)

elementByClassNameOrNull(value, cb) -> cb(err, element)
elementByCssSelectorOrNull(value, cb) -> cb(err, element)
elementByIdOrNull(value, cb) -> cb(err, element)
elementByNameOrNull(value, cb) -> cb(err, element)
elementByLinkTextOrNull(value, cb) -> cb(err, element)
elementByPartialLinkTextOrNull(value, cb) -> cb(err, element)
elementByTagNameOrNull(value, cb) -> cb(err, element)
elementByXPathOrNull(value, cb) -> cb(err, element)
elementByCssOrNull(value, cb) -> cb(err, element)
elementByIosUIAutomationOrNull(value, cb) -> cb(err, element)
elementByIosClassChainOrNull(value, cb) -> cb(err, element)
elementByIosPredicateStringOrNull(value, cb) -> cb(err, element)
elementByAndroidUIAutomatorOrNull(value, cb) -> cb(err, element)
elementByAccessibilityIdOrNull(value, cb) -> cb(err, element)

Retrieve an element avoiding not found exception and returning undefined instead:
elementIfExists(using, value, cb) -> cb(err, element)

elementByClassNameIfExists(value, cb) -> cb(err, element)
elementByCssSelectorIfExists(value, cb) -> cb(err, element)
elementByIdIfExists(value, cb) -> cb(err, element)
elementByNameIfExists(value, cb) -> cb(err, element)
elementByLinkTextIfExists(value, cb) -> cb(err, element)
elementByPartialLinkTextIfExists(value, cb) -> cb(err, element)
elementByTagNameIfExists(value, cb) -> cb(err, element)
elementByXPathIfExists(value, cb) -> cb(err, element)
elementByCssIfExists(value, cb) -> cb(err, element)
elementByIosUIAutomationIfExists(value, cb) -> cb(err, element)
elementByIosClassChainIfExists(value, cb) -> cb(err, element)
elementByIosPredicateStringIfExists(value, cb) -> cb(err, element)
elementByAndroidUIAutomatorIfExists(value, cb) -> cb(err, element)
elementByAccessibilityIdIfExists(value, cb) -> cb(err, element)

Check if element exists:
hasElement(using, value, cb) -> cb(err, boolean)

hasElementByClassName(value, cb) -> cb(err, boolean)
hasElementByCssSelector(value, cb) -> cb(err, boolean)
hasElementById(value, cb) -> cb(err, boolean)
hasElementByName(value, cb) -> cb(err, boolean)
hasElementByLinkText(value, cb) -> cb(err, boolean)
hasElementByPartialLinkText(value, cb) -> cb(err, boolean)
hasElementByTagName(value, cb) -> cb(err, boolean)
hasElementByXPath(value, cb) -> cb(err, boolean)
hasElementByCss(value, cb) -> cb(err, boolean)
hasElementByIosUIAutomation(value, cb) -> cb(err, boolean)
hasElementByIosClassChain(value, cb) -> cb(err, boolean)
hasElementByIosPredicateString(value, cb) -> cb(err, boolean)
hasElementByAndroidUIAutomator(value, cb) -> cb(err, boolean)
hasElementByAccessibilityId(value, cb) -> cb(err, boolean)

POST /session/:sessionId/element/active
Get the element on the page that currently has focus.
active(cb) -> cb(err, element)
POST /session/:sessionId/element/:id/element
Search for an element on the page, starting from the identified element.

element.element(using, value, cb) -> cb(err, element)

element.elementByClassName(value, cb) -> cb(err, element)
element.elementByCssSelector(value, cb) -> cb(err, element)
element.elementById(value, cb) -> cb(err, element)
element.elementByName(value, cb) -> cb(err, element)
element.elementByLinkText(value, cb) -> cb(err, element)
element.elementByPartialLinkText(value, cb) -> cb(err, element)
element.elementByTagName(value, cb) -> cb(err, element)
element.elementByXPath(value, cb) -> cb(err, element)
element.elementByCss(value, cb) -> cb(err, element)
element.elementByIosUIAutomation(value, cb) -> cb(err, element)
element.elementByIosClassChain(value, cb) -> cb(err, element)
element.elementByIosPredicateString(value, cb) -> cb(err, element)
element.elementByAndroidUIAutomator(value, cb) -> cb(err, element)
element.elementByAccessibilityId(value, cb) -> cb(err, element)

POST /session/:sessionId/element/:id/elements
Search for multiple elements on the page, starting from the identified element.

element.elements(using, value, cb) -> cb(err, elements)

element.elementsByClassName(value, cb) -> cb(err, elements)
element.elementsByCssSelector(value, cb) -> cb(err, elements)
element.elementsById(value, cb) -> cb(err, elements)
element.elementsByName(value, cb) -> cb(err, elements)
element.elementsByLinkText(value, cb) -> cb(err, elements)
element.elementsByPartialLinkText(value, cb) -> cb(err, elements)
element.elementsByTagName(value, cb) -> cb(err, elements)
element.elementsByXPath(value, cb) -> cb(err, elements)
element.elementsByCss(value, cb) -> cb(err, elements)
element.elementsByIosUIAUtomation(value, cb) -> cb(err, elements)
element.elementsByIosClassChain(value, cb) -> cb(err, elements)
element.elementsByIosPredicateString(value, cb) -> cb(err, elements)
element.elementsByAndroidUIAutomator(value, cb) -> cb(err, elements)
element.elementsByAccessibilityId(value, cb) -> cb(err, elements)

POST /session/:sessionId/element/:id/click
Click on an element.

clickElement(element, cb) -> cb(err)

element.click(cb) -> cb(err)

POST /session/:sessionId/element/:id/submit
Submit a FORM element.

submit(element, cb) -> cb(err)
Submit a `FORM` element.

element.submit(cb) -> cb(err)

GET /session/:sessionId/element/:id/text
Returns the visible text for the element.

text(element, cb) -> cb(err, text)
element: specific element, 'body', or undefined

element.text(cb) -> cb(err, text)

Check if text is present:
textPresent(searchText, element, cb) -> cb(err, boolean)
element: specific element, 'body', or undefined

element.textPresent(searchText, cb) -> cb(err, boolean)

POST /session/:sessionId/element/:id/value
Send a sequence of key strokes to an element.

type(element, keys, cb) -> cb(err)
Type keys (all keys are up at the end of command).
special key map: wd.SPECIAL_KEYS (see lib/special-keys.js)

element.type(keys, cb) -> cb(err)

element.keys(keys, cb) -> cb(err)

POST /session/:sessionId/keys
Send a sequence of key strokes to the active element.
keys(keys, cb) -> cb(err)
Press keys (keys may still be down at the end of command).
special key map: wd.SPECIAL_KEYS (see lib/special-keys.js)
GET /session/:sessionId/element/:id/name
Query for an element's tag name.

getTagName(element, cb) -> cb(err, name)

element.getTagName(cb) -> cb(err, name)

POST /session/:sessionId/element/:id/clear
Clear a TEXTAREA or text INPUT element's value.

clear(element, cb) -> cb(err)

element.clear(cb) -> cb(err)

GET /session/:sessionId/element/:id/selected
Determine if an OPTION element, or an INPUT element of type checkbox or radiobutton is currently selected.

isSelected(element, cb) -> cb(err, selected)

element.isSelected(cb) -> cb(err, selected)

GET /session/:sessionId/element/:id/enabled
Determine if an element is currently enabled.

isEnabled(element, cb) -> cb(err, enabled)

element.isEnabled(cb) -> cb(err, enabled)

GET /session/:sessionId/element/:id/attribute/:name
Get the value of an element's attribute.

getAttribute(element, attrName, cb) -> cb(err, value)

element.getAttribute(attrName, cb) -> cb(err, value)

Get element value (in value attribute):
getValue(element, cb) -> cb(err, value)

element.getValue(cb) -> cb(err, value)

GET /session/:sessionId/element/:id/equals/:other
Test if two element IDs refer to the same DOM element.

element.equals(other, cb) -> cb(err, value)

equalsElement(element, other , cb) -> cb(err, value)

GET /session/:sessionId/element/:id/displayed
Determine if an element is currently displayed.

isDisplayed(element, cb) -> cb(err, displayed)

element.isDisplayed(cb) -> cb(err, displayed)

GET /session/:sessionId/element/:id/location
Determine an element's location on the page.

getLocation(element, cb) -> cb(err, location)

element.getLocation(cb) -> cb(err, location)

element.getLocationInView(cb) -> cb(err, location)

GET /session/:sessionId/element/:id/location_in_view
Determine an element's location on the screen once it has been scrolled into view.
getLocationInView(element, cb) -> cb(err, location)
GET /session/:sessionId/element/:id/size
Determine an element's size in pixels.

getSize(element, cb) -> cb(err, size)

element.getSize(cb) -> cb(err, size)

GET /session/:sessionId/element/:id/css/:propertyName
Query the value of an element's computed CSS property.

getComputedCss(element, cssProperty , cb) -> cb(err, value)

element.getComputedCss(cssProperty , cb) -> cb(err, value)

GET /session/:sessionId/orientation
Get the current browser orientation.
getOrientation(cb) -> cb(err, orientation)
POST /session/:sessionId/orientation
Set the browser orientation.
setOrientation(orientation) -> cb(err)
GET /session/:sessionId/alert_text
Gets the text of the currently displayed JavaScript alert(), confirm(), or prompt() dialog.
alertText(cb) -> cb(err, text)
POST /session/:sessionId/alert_text
Sends keystrokes to a JavaScript prompt() dialog.
alertKeys(keys, cb) -> cb(err)
POST /session/:sessionId/accept_alert
Accepts the currently displayed alert dialog.
acceptAlert(cb) -> cb(err)
POST /session/:sessionId/dismiss_alert
Dismisses the currently displayed alert dialog.
dismissAlert(cb) -> cb(err)
POST /session/:sessionId/moveto
Move the mouse by an offset of the specificed element.

moveTo(element, xoffset, yoffset, cb) -> cb(err)
Move to element, element may be null, xoffset and y offset
are optional.

element.moveTo(xoffset, yoffset, cb) -> cb(err)
xoffset and y offset are optional.

POST /session/:sessionId/click
Click any mouse button (at the coordinates set by the last moveto command).
click(button, cb) -> cb(err)
Click on current element.
Buttons: {left: 0, middle: 1 , right: 2}
POST /session/:sessionId/buttondown
Click and hold the left mouse button (at the coordinates set by the last moveto command).
buttonDown(button ,cb) -> cb(err)
button is optional.
{LEFT = 0, MIDDLE = 1 , RIGHT = 2}.
LEFT if not specified.
POST /session/:sessionId/buttonup
Releases the mouse button previously held (where the mouse is currently at).
buttonUp(button, cb) -> cb(err)
button is optional.
{LEFT = 0, MIDDLE = 1 , RIGHT = 2}.
LEFT if not specified.
POST /session/:sessionId/doubleclick
Double-clicks at the current mouse coordinates (set by moveto).

doubleclick(cb) -> cb(err)

element.doubleClick(cb) -> cb(err)

POST /session/:sessionId/touch/click
Single tap on the touch enabled device.

tap(element) -> cb(err)
Taps element

element.tap(cb) -> cb(err)

POST /session/:sessionId/touch/flick
Flick on the touch screen using finger motion events.

flick(xspeed, yspeed, swipe, cb) -> cb(err)
Flicks, starting anywhere on the screen.
flick(element, xoffset, yoffset, speed, cb) -> cb(err)
Flicks, starting at element center.

element.flick(xoffset, yoffset, speed, cb) -> cb(err)

GET /session/:sessionId/location
Get the current geo location.
getGeoLocation(cb) -> cb(err, geoLocationObj)
POST /session/:sessionId/location
Set the current geo location.
setGeoLocation(lat, lon, alt, cb) -> cb(err)
POST /session/:sessionId/local_storage
Set the storage item for the given key.
setLocalStorageKey(key, value, cb) -> cb(err)
# uses safeExecute() due to localStorage bug in Selenium
DELETE /session/:sessionId/local_storage
Clear the storage.
clearLocalStorage(cb) -> cb(err)
# uses safeExecute() due to localStorage bug in Selenium
GET /session/:sessionId/local_storage/key/:key
Get the storage item for the given key.
getLocalStorageKey(key, cb) -> cb(err)
# uses safeEval() due to localStorage bug in Selenium
DELETE /session/:sessionId/local_storage/key/:key
Remove the storage item for the given key.
removeLocalStorageKey(key, cb) -> cb(err)
# uses safeExecute() due to localStorage bug in Selenium
POST /session/:sessionId/log
Get the log for a given log type.

log(logType, cb) -> cb(err, arrayOfLogs)

GET /session/:sessionId/log/types
Get available log types.
logTypes(cb) -> cb(err, arrayOfLogTypes)
GET /session/:sessionId/context
Get the current context (mjsonWire).
currentContext(cb) -> cb(err)
POST /session/:sessionId/context
Set the current context (mjsonWire).
context(contextRef, cb) -> cb(err, context)
GET /session/:sessionId/contexts
Get a list of the available contexts (mjsonWire).
contexts(cb) -> cb(err, handle)
POST /session/:sessionId/touch/perform
Perform touch action (mjsonWire).
performTouchAction(touchAction) -> cb(err)
POST /session/:sessionId/touch/multi/perform
Perform multitouch action (mjsonWire).

performMultiAction(element, multiAction) -> cb(err, touchStateObjects)
performMultiAction(multiAction) -> cb(err, touchStateObjects)

element.performMultiAction(actions) -> cb(err, touchStateObjects)

POST /session/:sessionId/appium/device/shake
Shake device (mjsonWire).

shakeDevice(cb) -> cb(err)

shake(cb) -> cb(err)

POST /session/:sessionId/appium/device/lock
Lock device (mjsonWire).

lockDevice(seconds, cb) -> cb(err)

lock(seconds, cb) -> cb(err)

unlockDevice(cb) -> cb(err)

unlock(cb) -> cb(err)

POST /session/:sessionId/appium/device/keyevent
Send key event to device (DEPRECATED) (mjsonWire).

deviceKeyEvent(keycode, metastate, cb) -> cb(err)
metastate is optional. DEPRECATED: use pressKeycode instead.

pressDeviceKey(keycode, metastate, cb) -> cb(err)
metastate is optional. DEPRECATED: use pressKeycode instead.

POST /session/:sessionId/appium/device/press_keycode
Send key event to device (mjsonWire).

pressKeycode(keycode, metastate, cb) -> cb(err)
metastate is optional.

POST /session/:sessionId/appium/device/long_press_keycode
Press and hold a particular key code on the device (mjsonWire).

longPressKeycode(keycode, metastate, cb) -> cb(err)
metastate is optional.

POST /session/:sessionId/appium/device/rotate
Rotate device (mjsonWire).

rotateDevice(element, opts, cb) -> cb(err)
rotateDevice(opts, cb) -> cb(err)
opts is like the following:
{x: 114, y: 198, duration: 5, radius: 3, rotation: 220, touchCount: 2}

rotate(element, opts, cb) -> cb(err)
rotate(opts, cb) -> cb(err)
opts is like the following:
{x: 114, y: 198, duration: 5, radius: 3, rotation: 220, touchCount: 2}

element.rotate(opts, cb) -> cb(err)
opts is like the following:
{x: 114, y: 198, duration: 5, radius: 3, rotation: 220, touchCount: 2}

GET /session/:sessionId/appium/device/current_activity
Get current activity (mjsonWire).

getCurrentDeviceActivity(cb) -> cb(err)

getCurrentActivity(cb) -> cb(err)

GET /session/:sessionId/appium/device/current_package
Get current package (mjsonWire).

getCurrentPackage(cb) -> cb(err)

POST /session/:sessionId/appium/device/install_app
Install app (mjsonWire).

installAppOnDevice(appPath, cb) -> cb(err)

installApp(appPath, cb) -> cb(err)

POST /session/:sessionId/appium/device/remove_app
Remove app (mjsonWire).

removeAppFromDevice(appId, cb) -> cb(err)

removeApp(appId, cb) -> cb(err)

POST /session/:sessionId/appium/device/app_installed
Check if the app is installed (mjsonWire).

isAppInstalledOnDevice(bundleId, cb) -> cb(isInstalled, err)

isAppInstalled(bundleId, cb) -> cb(isInstalled, err)

POST /session/:sessionId/appium/device/push_file
Push file to device (mjsonWire).

pushFileToDevice(pathOnDevice, base64Data, cb) -> cb(err)

pushFile(pathOnDevice, base64Data, cb) -> cb(err)

POST /session/:sessionId/appium/device/pull_file
Pull file from device (mjsonWire).

pullFileFromDevice(pathOnDevice, cb) -> cb(base64EncodedData, err)

pullFile(pathOnDevice, cb) -> cb(base64EncodedData, err)

POST /session/:sessionId/appium/device/pull_folder
Pull folder from device (mjsonWire).

pullFolderFromDevice(pathOnDevice, cb) -> cb(base64EncodedData, err)

pullFolder(pathOnDevice, cb) -> cb(base64EncodedData, err)

POST /session/:sessionId/appium/device/toggle_airplane_mode
Toggle airplane mode (mjsonWire).

toggleAirplaneModeOnDevice(cb) -> cb(err)

toggleAirplaneMode(cb) -> cb(err)

toggleFlightMode(cb) -> cb(err)

POST /session/:sessionId/appium/device/toggle_wifi
Toggle wifi (mjsonWire).

toggleWiFiOnDevice(cb) -> cb(err)

toggleWiFi(cb) -> cb(err)

POST /session/:sessionId/appium/device/toggle_location_services
Toggle location services (mjsonWire).

toggleLocationServicesOnDevice(cb) -> cb(err)

toggleLocationServices(cb) -> cb(err)

POST /session/:sessionId/appium/device/toggle_data
Toggle data (mjsonWire).

toggleDataOnDevice(cb) -> cb(err)

toggleData(cb) -> cb(err)

POST /session/:sessionId/appium/device/start_activity
Start an Android activity (mjsonWire).
startActivity(options, cb) -> cb(err)
Start an arbitrary Android activity during a session. The 'options' parameter should
implement the interface {appPackage, appActivity, [appWaitPackage], [appWaitActivity]}.
POST /session/:sessionId/appium/device/get_clipboard
Get the content of the system clipboard (mjsonWire).
getClipboard(contentType, cb) -> cb(err)
Return clipboard content as base64-encoded string or an empty string if the clipboard is empty
The type of the content to get: plaintext, image, url. Android supports only plaintext
POST /session/:sessionId/appium/device/set_clipboard
Set the content of the system clipboard (mjsonWire).
setClipboard(content, contentType, cb) -> cb(err)
Content is the actual base64 encoded clipboard content
Supported content type: plaintext, image, url. Android supports only plaintext
POST /session/:sessionId/appium/app/launch
Launch app (mjsonWire).
launchApp(cb) -> cb(err)
POST /session/:sessionId/appium/app/close
Close app (mjsonWire).
closeApp(cb) -> cb(err)
POST /session/:sessionId/appium/app/reset
Reset app (mjsonWire).
resetApp(cb) -> cb(err)
POST /session/:sessionId/appium/app/background
Background app (mjsonWire).
backgroundApp(seconds, cb) -> cb(err)
POST /session/:sessionId/appium/app/end_test_coverage
End test coverage (mjsonWire).

endTestCoverageForApp(intentToBroadcast, pathOnDevice) -> cb(base64Data,err)

endTestCoverage(intentToBroadcast, pathOnDevice) -> cb(base64Data,err)

endCoverage(intentToBroadcast, pathOnDevice) -> cb(base64Data,err)

POST /session/:sessionId/appium/app/complex_find
Find within app (mjsonWire).

complexFindInApp(selector) -> cb(element(s))
Return a single element or an elements array depending on
selector

complexFind(selector) -> cb(element(s))
Return a single element or an elements array depending on
selector

POST /session/:sessionId/appium/app/strings
Retrieve app strings (mjsonWire).
getAppStrings(cb) -> cb(err)
POST /session/:sessionId/appium/element/:elementId?/value
Set element immediate value (mjsonWire).

setImmediateValueInApp(element, value, cb) -> cb(err)

setImmediateValue(element, value, cb) -> cb(err)

element.setImmediateValueInApp(value, cb) -> cb(err)

element.setImmediateValue(value, cb) -> cb(err)

GET /session/:sessionId/network_connection
Get appium selendroid network connection type (mjsonWire).
getNetworkConnection(cb) -> cb(err, networkConnectionInfo)
POST /session/:sessionId/network_connection
Set appium selendroid network connection type (mjsonWire).
setNetworkConnection(type, cb) -> cb(err)
GET /session/:sessionId/appium/device/is_keyboard_shown
Whether or not the soft keyboard is shown (mjsonWire).
isKeyboardShown() -> cb(err)
POST /session/:sessionId/appium/device/hide_keyboard
Hide keyboard (mjsonWire).
hideKeyboard() -> cb(err)
hideKeyboard(keyName, cb) -> cb(err)
hideKeyboard({strategy: 'pressKey', key:'<key>'}) -> cb(err)
hideKeyboard({strategy: 'tapOutside'}) -> cb(err)
POST /session/:sessionId/appium/device/open_notifications
Open Notifications (mjsonWire).
openNotifications(cb) -> cb(err)
POST /session/:sessionId/appium/performanceData/types
Get the types of system state which is supported like cpu, memory, network traffic, and battery (mjsonWire).
getSupportedPerformanceDataTypes(cb) -> cb(err)
POST /session/:sessionId/appium/getPerformanceData
Get the system state like cpu, memory, network traffic, and battery (mjsonWire).

getPerformanceData(packageName, dataType, dataReadTimeout, cb) -> cb(err)
dataReadTimeout is optional.

POST /session/:sessionId/appium/simulator/touch_id
TouchID (mjsonWire).
touchId(cb) -> cb(err)
extra attach(sessionID, cb) -> cb(err)
Connect to an already-active session.
extra detach(cb) -> cb(err)
Detach from the current session.
extra
extra Retrieves the current session id.
getSessionId(cb) -> cb(err, sessionId)
getSessionId()
extra Opens a new window (using Javascript window.open):
newWindow(url, name, cb) -> cb(err)
newWindow(url, cb) -> cb(err)
name: optional window name
Window can later be accessed by name with the window method,
or by getting the last handle returned by the windowHandles method.
extra windowName(cb) -> cb(err, name)
extra configureHttp(opts)
opts example:
{timeout:60000, retries: 3, 'retryDelay': 15, baseUrl='http://example.com/'}
more info in README.
extra waitFor(asserter, timeout, pollFreq, cb) -> cb(err, return_value)
timeout and pollFreq are optional (default 1000ms/200ms)
waitFor(opts, cb) -> cb(err)
opts with the following fields: timeout, pollFreq, asserter.
asserter like: function(browser , cb) -> cb(err, satisfied, return_value)
extra waitForElement(using, value, asserter, timeout, pollFreq, cb) -> cb(err, el)
waitForElement(using, value, timeout, pollFreq, cb) -> cb(err, el)
timeout and pollFreq are optional (default 1000ms/200ms)
waitForElement(using, value, opts, cb) -> cb(err, el)
opts with the following fields: timeout, pollFreq, asserter.
asserter like: function(element , cb) -> cb(err, satisfied, el)
extra waitForElements(using, value, asserter, timeout, pollFreq, cb) -> cb(err, els)
waitForElements(using, value, timeout, pollFreq, cb) -> cb(err, els)
timeout and pollFreq are optional (default 1000ms/200ms)
waitForElements(using, value, opts, cb) -> cb(err, els)
opts with the following fields: timeout, pollFreq, asserter.
asserter like: function(element , cb) -> cb(err, satisfied, el)
extra saveScreenshot(path, cb) -> cb(err, filePath)
path maybe a full file path, a directory path (finishing with /),
the screenshot name, or left blank (will create a file in the system temp dir).
extra waitForElementByClassName(value, asserter, timeout, pollFreq, cb) -> cb(err, el)
waitForElementByCssSelector(value, asserter, timeout, pollFreq, cb) -> cb(err, el)
waitForElementById(value, asserter, timeout, pollFreq, cb) -> cb(err, el)
waitForElementByName(value, asserter, timeout, pollFreq, cb) -> cb(err, el)
waitForElementByLinkText(value, asserter, timeout, pollFreq, cb) -> cb(err, el)
waitForElementByPartialLinkText(value, asserter, timeout, pollFreq, cb) -> cb(err, el)
waitForElementByTagName(value, asserter, timeout, pollFreq, cb) -> cb(err, el)
waitForElementByXPath(value, asserter, timeout, pollFreq, cb) -> cb(err, el)
waitForElementByCss(value, asserter, timeout, pollFreq, cb) -> cb(err, el)
waitForElementByIosUIAutomation(value, asserter, timeout, pollFreq, cb) -> cb(err, el)
waitForElementByIosClassChain(value, asserter, timeout, pollFreq, cb) -> cb(err, el)
waitForElementByAndroidUIAutomator(value, asserter, timeout, pollFreq, cb) -> cb(err, el)
waitForElementByAccessibilityId(value, asserter, timeout, pollFreq, cb) -> cb(err, el)
asserter, timeout, pollFreq are optional, opts may be passed instead,
as in waitForElement.
extra waitForElementsByClassName(value, asserter, timeout, pollFreq, cb) -> cb(err, els)
waitForElementsByCssSelector(value, asserter, timeout, pollFreq, cb) -> cb(err, els)
waitForElementsById(value, asserter, timeout, pollFreq, cb) -> cb(err, els)
waitForElementsByName(value, asserter, timeout, pollFreq, cb) -> cb(err, els)
waitForElementsByLinkText(value, asserter, timeout, pollFreq, cb) -> cb(err, els)
waitForElementsByPartialLinkText(value, asserter, timeout, pollFreq, cb) -> cb(err, els)
waitForElementsByTagName(value, asserter, timeout, pollFreq, cb) -> cb(err, els)
waitForElementsByXPath(value, asserter, timeout, pollFreq, cb) -> cb(err, els)
waitForElementsByCss(value, asserter, timeout, pollFreq, cb) -> cb(err, els)
waitForElementsByIosUIAutomation(value, asserter, timeout, pollFreq, cb) -> cb(err, el)
waitForElementsByIosClassChain(value, asserter, timeout, pollFreq, cb) -> cb(err, el)
waitForElementsByAndroidUIAutomator(value, asserter, timeout, pollFreq, cb) -> cb(err, el)
waitForElementsByAccessibilityId(value, asserter, timeout, pollFreq, cb) -> cb(err, el)
asserter, timeout, pollFreq are optional, opts may be passed instead,
as in waitForElements.
extra Retrieves the pageIndex element (added for Appium):
getPageIndex(element, cb) -> cb(err, pageIndex)
extra Uploads a local file using undocumented
POST /session/:sessionId/file
uploadFile(filepath, cb) -> cb(err, filepath)
extra Waits for JavaScript condition to be true (async script polling within browser):
waitForConditionInBrowser(conditionExpr, timeout, pollFreq, cb) -> cb(err, boolean)
conditionExpr: condition expression, should return a boolean
timeout and pollFreq are optional, default: 1000/100.
return true if condition satisfied, error otherwise.
extra sauceJobUpdate(jsonData, cb) -> cb(err)
extra sauceJobStatus(hasPassed, cb) -> cb(err)
extra sleep(ms, cb) -> cb(err)
extra noop(cb) -> cb(err)
extra Equivalent to the python sendKeys binding. Upload file if
a local file is detected, otherwise behaves like type.
element.sendKeys(keys, cb) -> cb(err)
extra Equivalent to the python sendKeys binding, but replaces texts instead of keeping original. Upload file if
a local file is detected, otherwise behaves like type.
element.setText(keys, cb) -> cb(err)
extra isVisible(cb) -> cb(err, boolean)
extra element.sleep(ms, cb) -> cb(err)
extra element.noop(cb) -> cb(err)
asserter asserters.nonEmptyText
asserter asserters.textInclude(content) -> Asserter
asserter asserters.isVisible
asserter asserters.isHidden
asserter asserters.jsCondition(jsConditionExpr) -> Asserter
jsConditionExpr: js script expression, should evaluate as boolean.
wd wd.configureHttp(opts)
opts example:
{timeout:60000, retries: 3, 'retryDelay': 15, baseUrl='http://example.com/'}
more info in README.
wd wd.showHideDeprecation(boolean)
wd wd.addAsyncMethod(name, func)
wd wd.addElementAsyncMethod(name, func)
wd wd.addPromiseMethod(name, func)
wd wd.addElementPromiseMethod(name, func)
wd wd.addPromiseChainMethod(name, func)
wd wd.addElementPromiseChainMethod(name, func)
wd wd.removeMethod(name, func)
MISSING: POST /session/:sessionId/appium/device/is_locked isLocked(cb) -> cb(err)
MISSING: GET /session/:sessionId/appium/settings settings(cb) -> cb(err, settingsObject)
MISSING: POST /session/:sessionId/appium/settings updateSettings(settingsObject, cb) -> cb(err)