# class: AndroidDevice * since: v1.9 * langs: js [AndroidDevice] represents a connected device, either real hardware or emulated. Devices can be obtained using [`method: Android.devices`]. ## event: AndroidDevice.close * since: v1.28 - argument: <[AndroidDevice]> Emitted when the device connection gets closed. ## event: AndroidDevice.webView * since: v1.9 - argument: <[AndroidWebView]> Emitted when a new WebView instance is detected. ## async method: AndroidDevice.close * since: v1.9 Disconnects from the device. ## async method: AndroidDevice.drag * since: v1.9 Drags the widget defined by [`param: selector`] towards [`param: dest`] point. ### param: AndroidDevice.drag.selector * since: v1.9 - `selector` <[AndroidSelector]> Selector to drag. ### param: AndroidDevice.drag.dest * since: v1.9 - `dest` <[Object]> - `x` <[float]> - `y` <[float]> Point to drag to. ### option: AndroidDevice.drag.speed * since: v1.9 - `speed` <[float]> Optional speed of the drag in pixels per second. ### option: AndroidDevice.drag.timeout = %%-android-timeout-%% * since: v1.9 ## async method: AndroidDevice.fill * since: v1.9 Fills the specific [`param: selector`] input box with [`param: text`]. ### param: AndroidDevice.fill.selector * since: v1.9 - `selector` <[AndroidSelector]> Selector to fill. ### param: AndroidDevice.fill.text * since: v1.9 - `text` <[string]> Text to be filled in the input box. ### option: AndroidDevice.fill.timeout = %%-android-timeout-%% * since: v1.9 ## async method: AndroidDevice.fling * since: v1.9 Flings the widget defined by [`param: selector`] in the specified [`param: direction`]. ### param: AndroidDevice.fling.selector * since: v1.9 - `selector` <[AndroidSelector]> Selector to fling. ### param: AndroidDevice.fling.direction * since: v1.9 - `direction` <[AndroidFlingDirection]<"down"|"up"|"left"|"right">> Fling direction. ### option: AndroidDevice.fling.speed * since: v1.9 - `speed` <[float]> Optional speed of the fling in pixels per second. ### option: AndroidDevice.fling.timeout = %%-android-timeout-%% * since: v1.9 ## async method: AndroidDevice.info * since: v1.9 - returns: <[AndroidElementInfo]> Returns information about a widget defined by [`param: selector`]. ### param: AndroidDevice.info.selector * since: v1.9 - `selector` <[AndroidSelector]> Selector to return information about. ## property: AndroidDevice.input * since: v1.9 - type: <[AndroidInput]> ## async method: AndroidDevice.installApk * since: v1.9 Installs an apk on the device. ### param: AndroidDevice.installApk.file * since: v1.9 - `file` <[string]|[Buffer]> Either a path to the apk file, or apk file content. ### option: AndroidDevice.installApk.args * since: v1.9 - `args` <[Array]<[string]>> Optional arguments to pass to the `shell:cmd package install` call. Defaults to `-r -t -S`. ## async method: AndroidDevice.launchBrowser * since: v1.9 - returns: <[BrowserContext]> Launches Chrome browser on the device, and returns its persistent context. ### option: AndroidDevice.launchBrowser.pkg * since: v1.9 - `pkg` <[string]> Optional package name to launch instead of default Chrome for Android. ### option: AndroidDevice.launchBrowser.-inline- = %%-shared-context-params-list-v1.8-%% * since: v1.9 ### option: AndroidDevice.launchBrowser.proxy = %%-browser-option-proxy-%% * since: v1.29 ### option: AndroidDevice.launchBrowser.args = %%-browser-option-args-%% * since: v1.29 ## async method: AndroidDevice.longTap * since: v1.9 Performs a long tap on the widget defined by [`param: selector`]. ### param: AndroidDevice.longTap.selector * since: v1.9 - `selector` <[AndroidSelector]> Selector to tap on. ### option: AndroidDevice.longTap.timeout = %%-android-timeout-%% * since: v1.9 ## method: AndroidDevice.model * since: v1.9 - returns: <[string]> Device model. ## async method: AndroidDevice.open * since: v1.9 - returns: <[AndroidSocket]> Launches a process in the shell on the device and returns a socket to communicate with the launched process. ### param: AndroidDevice.open.command * since: v1.9 - `command` <[string]> Shell command to execute. ## async method: AndroidDevice.pinchClose * since: v1.9 Pinches the widget defined by [`param: selector`] in the closing direction. ### param: AndroidDevice.pinchClose.selector * since: v1.9 - `selector` <[AndroidSelector]> Selector to pinch close. ### param: AndroidDevice.pinchClose.percent * since: v1.9 - `percent` <[float]> The size of the pinch as a percentage of the widget's size. ### option: AndroidDevice.pinchClose.speed * since: v1.9 - `speed` <[float]> Optional speed of the pinch in pixels per second. ### option: AndroidDevice.pinchClose.timeout = %%-android-timeout-%% * since: v1.9 ## async method: AndroidDevice.pinchOpen * since: v1.9 Pinches the widget defined by [`param: selector`] in the open direction. ### param: AndroidDevice.pinchOpen.selector * since: v1.9 - `selector` <[AndroidSelector]> Selector to pinch open. ### param: AndroidDevice.pinchOpen.percent * since: v1.9 - `percent` <[float]> The size of the pinch as a percentage of the widget's size. ### option: AndroidDevice.pinchOpen.speed * since: v1.9 - `speed` <[float]> Optional speed of the pinch in pixels per second. ### option: AndroidDevice.pinchOpen.timeout = %%-android-timeout-%% * since: v1.9 ## async method: AndroidDevice.press * since: v1.9 Presses the specific [`param: key`] in the widget defined by [`param: selector`]. ### param: AndroidDevice.press.selector * since: v1.9 - `selector` <[AndroidSelector]> Selector to press the key in. ### param: AndroidDevice.press.key * since: v1.9 - `key` <[AndroidKey]> The key to press. ### option: AndroidDevice.press.timeout = %%-android-timeout-%% * since: v1.9 ## async method: AndroidDevice.push * since: v1.9 Copies a file to the device. ### param: AndroidDevice.push.file * since: v1.9 - `file` <[string]|[Buffer]> Either a path to the file, or file content. ### param: AndroidDevice.push.path * since: v1.9 - `path` <[string]> Path to the file on the device. ### option: AndroidDevice.push.mode * since: v1.9 - `mode` <[int]> Optional file mode, defaults to `644` (`rw-r--r--`). ## async method: AndroidDevice.screenshot * since: v1.9 - returns: <[Buffer]> Returns the buffer with the captured screenshot of the device. ### option: AndroidDevice.screenshot.path * since: v1.9 - `path` <[path]> The file path to save the image to. If [`option: path`] is a relative path, then it is resolved relative to the current working directory. If no path is provided, the image won't be saved to the disk. ## async method: AndroidDevice.scroll * since: v1.9 Scrolls the widget defined by [`param: selector`] in the specified [`param: direction`]. ### param: AndroidDevice.scroll.selector * since: v1.9 - `selector` <[AndroidSelector]> Selector to scroll. ### param: AndroidDevice.scroll.direction * since: v1.9 - `direction` <[AndroidScrollDirection]<"down"|"up"|"left"|"right">> Scroll direction. ### param: AndroidDevice.scroll.percent * since: v1.9 - `percent` <[float]> Distance to scroll as a percentage of the widget's size. ### option: AndroidDevice.scroll.speed * since: v1.9 - `speed` <[float]> Optional speed of the scroll in pixels per second. ### option: AndroidDevice.scroll.timeout = %%-android-timeout-%% * since: v1.9 ## method: AndroidDevice.serial * since: v1.9 - returns: <[string]> Device serial number. ## method: AndroidDevice.setDefaultTimeout * since: v1.9 This setting will change the default maximum time for all the methods accepting [`param: timeout`] option. ### param: AndroidDevice.setDefaultTimeout.timeout * since: v1.9 - `timeout` <[float]> Maximum time in milliseconds ## async method: AndroidDevice.shell * since: v1.9 - returns: <[Buffer]> Executes a shell command on the device and returns its output. ### param: AndroidDevice.shell.command * since: v1.9 - `command` <[string]> Shell command to execute. ## async method: AndroidDevice.swipe * since: v1.9 Swipes the widget defined by [`param: selector`] in the specified [`param: direction`]. ### param: AndroidDevice.swipe.selector * since: v1.9 - `selector` <[AndroidSelector]> Selector to swipe. ### param: AndroidDevice.swipe.direction * since: v1.9 - `direction` <[AndroidSwipeDirection]<"down"|"up"|"left"|"right">> Swipe direction. ### param: AndroidDevice.swipe.percent * since: v1.9 - `percent` <[float]> Distance to swipe as a percentage of the widget's size. ### option: AndroidDevice.swipe.speed * since: v1.9 - `speed` <[float]> Optional speed of the swipe in pixels per second. ### option: AndroidDevice.swipe.timeout = %%-android-timeout-%% * since: v1.9 ## async method: AndroidDevice.tap * since: v1.9 Taps on the widget defined by [`param: selector`]. ### param: AndroidDevice.tap.selector * since: v1.9 - `selector` <[AndroidSelector]> Selector to tap on. ### option: AndroidDevice.tap.duration * since: v1.9 - `duration` <[float]> Optional duration of the tap in milliseconds. ### option: AndroidDevice.tap.timeout = %%-android-timeout-%% * since: v1.9 ## async method: AndroidDevice.wait * since: v1.9 Waits for the specific [`param: selector`] to either appear or disappear, depending on the [`option: state`]. ### param: AndroidDevice.wait.selector * since: v1.9 - `selector` <[AndroidSelector]> Selector to wait for. ### option: AndroidDevice.wait.state * since: v1.9 - `state` <[AndroidDeviceState]<"gone">> Optional state. Can be either: * default - wait for element to be present. * `'gone'` - wait for element to not be present. ### option: AndroidDevice.wait.timeout = %%-android-timeout-%% * since: v1.9 ## async method: AndroidDevice.waitForEvent * since: v1.9 - returns: <[any]> Waits for event to fire and passes its value into the predicate function. Returns when the predicate returns truthy value. ### param: AndroidDevice.waitForEvent.event = %%-wait-for-event-event-%% * since: v1.9 ### param: AndroidDevice.waitForEvent.optionsOrPredicate * since: v1.9 - `optionsOrPredicate` ?<[function]|[Object]> - `predicate` <[function]> receives the event data and resolves to truthy value when the waiting should resolve. - `timeout` ?<[float]> maximum time to wait for in milliseconds. Defaults to `30000` (30 seconds). Pass `0` to disable timeout. The default value can be changed by using the [`method: AndroidDevice.setDefaultTimeout`]. Either a predicate that receives an event or an options object. Optional. ## async method: AndroidDevice.webView * since: v1.9 - returns: <[AndroidWebView]> This method waits until [AndroidWebView] matching the [`param: selector`] is opened and returns it. If there is already an open [AndroidWebView] matching the [`param: selector`], returns immediately. ### param: AndroidDevice.webView.selector * since: v1.9 - `selector` <[Object]> - `pkg` ?<[string]> Optional Package identifier. - `socketName` ?<[string]> Optional webview socket name. ### option: AndroidDevice.webView.timeout = %%-android-timeout-%% * since: v1.9 ## method: AndroidDevice.webViews * since: v1.9 - returns: <[Array]<[AndroidWebView]>> Currently open WebViews.