tap · doubleTap · tapFingers
This tool on every surface: CLI · MCP · Python · JavaScript · Go · Java · .NET
Tap an element. These call app_tap.
tap
public void tap(String target)
public void tap(int x, int y)
Taps a ref ("@e5") or a locator ("text=Sign In").
@param target a ref from map() such as "@e5", or a locator such as "text=Sign in"
Taps a point in device pixels.
@param x the horizontal coordinate, in device pixels @param y the vertical coordinate, in device pixels
doubleTap
public void doubleTap(String target)
public void doubleTap(int x, int y)
Taps twice, as one gesture rather than as two taps.
The same tool as tap(String) with one argument set, so the
target is resolved the same way and refused the same way when the screen
has moved. The uiautomator dump driver refuses it: the window is
40-300ms and nothing there controls the interval between two adb calls.
@param target a ref from map() such as "@e5", or a locator such as "text=Sign in"
Double-taps a point in device pixels.
@param x the horizontal coordinate, in device pixels @param y the vertical coordinate, in device pixels
tapFingers
public void tapFingers(String target, int fingers)
Taps an element with several fingers at once, side by side — a two-finger tap with 2, three with 3 (up to 5). On iOS three fingers can reach the system instead of the app: three-finger gestures are undo, redo, copy and paste there.
@param target a ref from map() such as "@e5", or a locator such as "text=Sign in"
@param fingers how many fingers, from 2 to 5
Examples
Tap an element by its visible text
device.tap("text=Network & internet");
The same call from the command line, mobium tap "text=Network & internet", printed on an Android 15 emulator:
tapped text=Network & internet at (407, 867)
| Before | After |
|---|---|
![]() | ![]() |
mobium tap "text=Network & internet" on an Android 15 emulator
Tap a ref from the last map
device.tap("@e2");
Double-tap
device.doubleTap("@e2");
Tap right after work the screen does not show, with the gray box on
device.launchWithGrayBox("dev.mobium.mobiumapp");
device.tap("testid=busyQuiet");
device.tap("testid=busyRowB"); // waits for the app to say it is idle
The same call from the command line, mobium tap testid=busyRowB, printed on an Android 15 emulator:
tapped testid=busyRowB at (540, 1095)
gray box: waited 307 ms for the app to go idle (busy: quiet)

mobium tap testid=busyRowB on MobiumApp's Busy Demo, Android 15 emulator, launched with --gray-box: the tap waited for the quiet refresh to finish, and Row B is the new generation's
On a device
| Before | After |
|---|---|
![]() | ![]() |
mobium double-tap testid=pressTarget on an Android 15 emulator



