Jump to content

Connect Leeroopedia MCP: Equip your AI agents to search best practices, build plans, verify code, diagnose failures, and look up hyperparameter defaults.

Implementation:Webdriverio Webdriverio BidiHandler Class

From Leeroopedia
Knowledge Sources
Domains Bidi_Protocol, WebDriver
Last Updated 2026-02-12 00:00 GMT

Overview

The BidiHandler class is an auto-generated WebDriver Bidi command handler that extends BidiCore and provides 46+ typed async methods covering all W3C WebDriver Bidi specification command domains.

Description

BidiHandler implements the full surface area of the WebDriver Bidi protocol as individual async methods. Each method maps one-to-one to a Bidi command (e.g., session.status, browsingContext.navigate, network.addIntercept) by delegating to the inherited send() method from BidiCore and casting the result to the appropriate local response type. The file is auto-generated from the W3C WebDriver Bidi specification via npm run generate:bidi and should not be edited manually.

The class covers the following command domains: session (status, new, end, subscribe, unsubscribe), browser (close, createUserContext, getClientWindows, getUserContexts, removeUserContext, setClientWindowState), browsingContext (activate, captureScreenshot, close, create, getTree, handleUserPrompt, locateNodes, navigate, print, reload, setViewport, traverseHistory), emulation (setGeolocationOverride), network (addIntercept, continueRequest, continueResponse, continueWithAuth, failRequest, provideResponse, removeIntercept, setCacheBehavior), script (addPreloadScript, disown, callFunction, evaluate, getRealms, removePreloadScript), storage (getCookies, setCookie, deleteCookies), input (performActions, releaseActions, setFiles), and webExtension (install, uninstall).

Usage

Use BidiHandler when you need to issue WebDriver Bidi protocol commands over a WebSocket connection. It is instantiated internally by the WebdriverIO framework via initiateBidi() in the utils module. Consumer code typically accesses these methods through the browser object after a Bidi session is established.

Code Reference

Source Location

Signature

export class BidiHandler extends BidiCore {
    async sessionStatus(params: remote.EmptyParams): Promise<local.SessionStatusResult>
    async sessionNew(params: remote.SessionNewParameters): Promise<local.SessionNewResult>
    async sessionEnd(params: remote.EmptyParams): Promise<local.EmptyResult>
    async sessionSubscribe(params: remote.SessionSubscriptionRequest): Promise<local.SessionSubscribeResult>
    async sessionUnsubscribe(params: remote.SessionUnsubscribeParameters): Promise<local.EmptyResult>
    async browserClose(params: remote.EmptyParams): Promise<local.EmptyResult>
    async browserCreateUserContext(params: remote.BrowserCreateUserContextParameters): Promise<local.BrowserCreateUserContextResult>
    async browserGetClientWindows(params: remote.EmptyParams): Promise<local.BrowserGetClientWindowsResult>
    async browserGetUserContexts(params: remote.EmptyParams): Promise<local.BrowserGetUserContextsResult>
    async browserRemoveUserContext(params: remote.BrowserRemoveUserContextParameters): Promise<local.EmptyResult>
    async browserSetClientWindowState(params: remote.BrowserSetClientWindowStateParameters): Promise<local.EmptyResult>
    async browsingContextActivate(params: remote.BrowsingContextActivateParameters): Promise<local.EmptyResult>
    async browsingContextCaptureScreenshot(params: remote.BrowsingContextCaptureScreenshotParameters): Promise<local.BrowsingContextCaptureScreenshotResult>
    async browsingContextClose(params: remote.BrowsingContextCloseParameters): Promise<local.EmptyResult>
    async browsingContextCreate(params: remote.BrowsingContextCreateParameters): Promise<local.BrowsingContextCreateResult>
    async browsingContextGetTree(params: remote.BrowsingContextGetTreeParameters): Promise<local.BrowsingContextGetTreeResult>
    async browsingContextHandleUserPrompt(params: remote.BrowsingContextHandleUserPromptParameters): Promise<local.EmptyResult>
    async browsingContextLocateNodes(params: remote.BrowsingContextLocateNodesParameters): Promise<local.BrowsingContextLocateNodesResult>
    async browsingContextNavigate(params: remote.BrowsingContextNavigateParameters): Promise<local.BrowsingContextNavigateResult>
    async browsingContextPrint(params: remote.BrowsingContextPrintParameters): Promise<local.BrowsingContextPrintResult>
    async browsingContextReload(params: remote.BrowsingContextReloadParameters): Promise<local.EmptyResult>
    async browsingContextSetViewport(params: remote.BrowsingContextSetViewportParameters): Promise<local.EmptyResult>
    async browsingContextTraverseHistory(params: remote.BrowsingContextTraverseHistoryParameters): Promise<local.BrowsingContextTraverseHistoryResult>
    async emulationSetGeolocationOverride(params: remote.EmulationSetGeolocationOverrideParameters): Promise<local.EmptyResult>
    async networkAddIntercept(params: remote.NetworkAddInterceptParameters): Promise<local.NetworkAddInterceptResult>
    async networkContinueRequest(params: remote.NetworkContinueRequestParameters): Promise<local.EmptyResult>
    async networkContinueResponse(params: remote.NetworkContinueResponseParameters): Promise<local.EmptyResult>
    async networkContinueWithAuth(params: remote.NetworkContinueWithAuthParameters): Promise<local.EmptyResult>
    async networkFailRequest(params: remote.NetworkFailRequestParameters): Promise<local.EmptyResult>
    async networkProvideResponse(params: remote.NetworkProvideResponseParameters): Promise<local.EmptyResult>
    async networkRemoveIntercept(params: remote.NetworkRemoveInterceptParameters): Promise<local.EmptyResult>
    async networkSetCacheBehavior(params: remote.NetworkSetCacheBehaviorParameters): Promise<local.EmptyResult>
    async scriptAddPreloadScript(params: remote.ScriptAddPreloadScriptParameters): Promise<local.ScriptAddPreloadScriptResult>
    async scriptDisown(params: remote.ScriptDisownParameters): Promise<local.EmptyResult>
    async scriptCallFunction(params: remote.ScriptCallFunctionParameters): Promise<local.ScriptEvaluateResult>
    async scriptEvaluate(params: remote.ScriptEvaluateParameters): Promise<local.ScriptEvaluateResult>
    async scriptGetRealms(params: remote.ScriptGetRealmsParameters): Promise<local.ScriptGetRealmsResult>
    async scriptRemovePreloadScript(params: remote.ScriptRemovePreloadScriptParameters): Promise<local.EmptyResult>
    async storageGetCookies(params: remote.StorageGetCookiesParameters): Promise<local.StorageGetCookiesResult>
    async storageSetCookie(params: remote.StorageSetCookieParameters): Promise<local.StorageSetCookieResult>
    async storageDeleteCookies(params: remote.StorageDeleteCookiesParameters): Promise<local.StorageDeleteCookiesResult>
    async inputPerformActions(params: remote.InputPerformActionsParameters): Promise<local.EmptyResult>
    async inputReleaseActions(params: remote.InputReleaseActionsParameters): Promise<local.EmptyResult>
    async inputSetFiles(params: remote.InputSetFilesParameters): Promise<local.EmptyResult>
    async webExtensionInstall(params: remote.WebExtensionInstallParameters): Promise<local.WebExtensionInstallResult>
    async webExtensionUninstall(params: remote.WebExtensionUninstallParameters): Promise<local.EmptyResult>
}

Import

import { BidiHandler } from './bidi/handler.js'

I/O Contract

Inputs

Name Type Required Description
params remote.*Parameters or remote.EmptyParams Yes Typed parameter object matching the W3C Bidi command specification. Each method has its own parameter type from remoteTypes.ts.

Outputs

Name Type Description
result Promise<local.*Result> Typed result from the Bidi command, cast from the CommandResponse.result to the appropriate local type from localTypes.ts.

Usage Examples

// Navigate to a URL using BidiHandler
const result = await bidiHandler.browsingContextNavigate({
    context: 'context-id-123',
    url: 'https://example.com',
    wait: 'complete'
});
// result: { navigation: 'nav-id', url: 'https://example.com' }

// Create a new browsing context (tab)
const createResult = await bidiHandler.browsingContextCreate({
    type: 'tab'
});
// createResult: { context: 'new-context-id' }

// Intercept network requests
const interceptResult = await bidiHandler.networkAddIntercept({
    phases: ['beforeRequestSent'],
    urlPatterns: [{ type: 'string', pattern: 'https://api.example.com/*' }]
});
// interceptResult: { intercept: 'intercept-id' }

// Evaluate a script in a browsing context
const evalResult = await bidiHandler.scriptEvaluate({
    expression: 'document.title',
    target: { context: 'context-id-123' },
    awaitPromise: false
});
// evalResult: { type: 'success', result: { type: 'string', value: 'Page Title' }, realm: 'realm-id' }

Related Pages

Page Connections

Double-click a node to navigate. Hold to expand connections.
Principle
Implementation
Heuristic
Environment