Interactive browser and app CLI for developers, powered by WebdriverIO.
npm install -g webdriverio-execute
Each command is stateless. Sessions are stored as JSON in ~/.wdio-x/sessions/. Commands attach to an existing session by reading that file — no daemon, no background process.
snapshot captures all interactable elements and assigns short refs (e1, e2, …). Subsequent commands use those refs to act on elements.
Open a browser or Appium session.
wdiox open https://example.com
wdiox open https://example.com --browser firefox
wdiox open --app /path/to/app.apk --device "emulator-5554"
wdiox open --app /path/to/app.ipa --device "iPhone 15"
# Attach to an already-running Chrome instance (via CDP)
wdiox open --attach
wdiox open --attach --debug-port 9333 --debug-host 127.0.0.1
# Attach to an already-running mobile app (Appium)
wdiox open --attach --device "emulator-5554" --platform android| Option | Default | Description |
|---|---|---|
--browser |
chrome |
Browser to use (chrome, firefox, edge, safari) |
--app |
— | Path to mobile app (.apk, .ipa, .app) |
--device |
emulator-5554 |
Device name |
--platform |
auto-detected | android or ios |
--hostname |
localhost |
WebDriver/Appium server hostname |
--port |
4723 (mobile) / 4444 (browser) |
Server port |
--grant-permissions |
true |
Auto-grant app permissions (Appium) |
--accept-alert |
true |
Auto-accept native alerts (Appium) |
--auto-dismiss |
false |
Auto-dismiss native alerts (Appium) |
--attach |
false |
Attach to an already-running browser or app instead of launching a new one |
--debug-port |
9222 |
Chrome remote debugging port (used with --attach) |
--debug-host |
localhost |
Chrome remote debugging host (used with --attach) |
--session |
default |
Session name |
If a session with the given name is already active, you'll be prompted to close it first.
Capture interactable elements on the current page or screen and assign numbered refs.
wdiox snapshot
wdiox snapshot --no-visible # include off-screen elements Page: https://example.com/login
e1 input[email] "Email address" #email
e2 input[password] "Password" #password
e3 button "Sign in" button*=Sign in
3 elements - default session
Click an element by ref.
wdiox click e3Clear and type into an input by ref.
wdiox fill e1 "[email protected]"
wdiox type e2 "mysecretpassword"Save a screenshot.
wdiox screenshot
wdiox screenshot /tmp/login-page.pngClose the current session.
wdiox close
wdiox close --session myappList all active sessions.
wdiox lsNAME BROWSER URL STATUS
default chrome https://example.com active
myapp Android /path/to/app.apk active
Every command accepts --session <name> (or -s <name>) to target a specific session. The WDIO_SESSION environment variable sets the default session name.
wdiox open https://site-a.com --session a
wdiox open https://site-b.com --session b
wdiox snapshot --session a
wdiox click e1 --session a
wdiox close --session bwdiox open https://example.com
wdiox snapshot
wdiox fill e1 "[email protected]"
wdiox fill e2 "password"
wdiox click e3
wdiox screenshot
wdiox closewdiox open --app ./app.apk --device "emulator-5554"
wdiox snapshot
wdiox click e1
wdiox fill e2 "hello"
wdiox close