
Product
Introducing Rust Support in Socket
Socket now supports Rust and Cargo, offering package search for all users and experimental SBOM generation for enterprise projects.
@wdio/protocols
Advanced tools
@wdio/protocols is a package that provides WebDriver and Appium protocol bindings for the WebdriverIO framework. It allows you to interact with browser and mobile automation protocols, enabling you to perform a wide range of automation tasks.
WebDriver Protocol
This feature allows you to interact with the WebDriver protocol to automate browser actions. The code sample demonstrates how to initialize a WebDriver session, navigate to a URL, get the page title, and then close the session.
const { WebDriverProtocol } = require('@wdio/protocols');
const session = new WebDriverProtocol({
hostname: 'localhost',
port: 4444,
path: '/wd/hub'
});
session.init({
capabilities: {
browserName: 'chrome'
}
}).then(() => {
return session.url('https://example.com');
}).then(() => {
return session.getTitle();
}).then(title => {
console.log('Page title is:', title);
return session.deleteSession();
}).catch(err => {
console.error('Error:', err);
});
Appium Protocol
This feature allows you to interact with the Appium protocol to automate mobile app actions. The code sample demonstrates how to initialize an Appium session, navigate to a URL within the app, get the app title, and then close the session.
const { AppiumProtocol } = require('@wdio/protocols');
const session = new AppiumProtocol({
hostname: 'localhost',
port: 4723,
path: '/wd/hub'
});
session.init({
capabilities: {
platformName: 'Android',
deviceName: 'emulator-5554',
app: '/path/to/app.apk'
}
}).then(() => {
return session.url('https://example.com');
}).then(() => {
return session.getTitle();
}).then(title => {
console.log('App title is:', title);
return session.deleteSession();
}).catch(err => {
console.error('Error:', err);
});
selenium-webdriver is a popular package for browser automation using the WebDriver protocol. It provides a high-level API for controlling web browsers. Compared to @wdio/protocols, selenium-webdriver is more widely used and has a larger community, but it does not support Appium protocol out of the box.
appium is a package that provides bindings for the Appium protocol, allowing you to automate mobile applications. It is similar to @wdio/protocols in terms of mobile automation capabilities but does not include WebDriver protocol bindings.
This package stores the definition for various automation protocols such as WebDriver or vendor specific protocol extensions like for SauceLabs. Unless you are interested in generating a WebDriver client there should be no reason why you should need this package. This package holds the definition of the following protocols:
To install the package, run:
npm install @wdio/protocols
You can get data by importing the package as follows:
import { WebDriverProtocol, MJsonWProtocol, AppiumProtocol, ChromiumProtocol, SauceLabsProtocol, SeleniumProtocol } from '@wdio/protocols'
/**
* get description of session command
*/
console.log(WebDriverProtocol['/session'].POST.description)
The package exposes TypeScript interfaces for all protocols. You can use them for your own project as follows:
import type { WebDriverCommands } from '@wdio/protocol'
import { WebDriverCommands, WebDriverCommandsAsync } from './src'
const browser = {} as WebDriverCommands
browser.sendAlertText(true)
// fails with "Argument of type 'boolean' is not assignable to parameter of type 'string'.ts(2345)"
const asyncBrowser = {} as WebDriverCommandsAsync
const a = await asyncBrowser.getTitle()
type foo = typeof a // string
For more information on WebdriverIO see the homepage.
v9.12.5 (2025-04-11)
wdio-protocols
webdriverio
webdriver
wdio-browserstack-service
wdio-utils
wdio-browserstack-service
webdriverio
FAQs
Utility package providing information about automation protocols
The npm package @wdio/protocols receives a total of 1,430,821 weekly downloads. As such, @wdio/protocols popularity was classified as popular.
We found that @wdio/protocols demonstrated a healthy version release cadence and project activity because the last version was released less than a year ago. It has 3 open source maintainers collaborating on the project.
Did you know?
Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.
Product
Socket now supports Rust and Cargo, offering package search for all users and experimental SBOM generation for enterprise projects.
Product
Socket’s precomputed reachability slashes false positives by flagging up to 80% of vulnerabilities as irrelevant, with no setup and instant results.
Product
Socket is launching experimental protection for Chrome extensions, scanning for malware and risky permissions to prevent silent supply chain attacks.