This is the multi-page printable view of this section.
Click here to print .
Return to the regular view of this page .
BiDirectional API (W3C compliant)
Page being translated from
English to Portuguese. Do you speak Portuguese? Help us to translate
it by sending us pull requests!
The following list of APIs will be growing as the WebDriver BiDirectional Protocol grows
and browser vendors implement the same.
Additionally, Selenium will try to support real-world use cases that internally use a combination of W3C BiDi protocol APIs.
If there is additional functionality you’d like to see, please raise a
feature request .
1 - Browsing Context
Page being translated from
English to Portuguese. Do you speak Portuguese? Help us to translate
it by sending us pull requests!
This section contains the APIs related to browsing context commands.
Open a new window
Creates a new browsing context in a new window.
Java
Ruby
JavaScript
Kotlin
Selenium v4.8
BrowsingContext browsingContext = new BrowsingContext ( driver , WindowType . WINDOW );
Open a new tab
Creates a new browsing context in a new tab.
Java
Ruby
JavaScript
Kotlin
Selenium v4.8
BrowsingContext browsingContext = new BrowsingContext ( driver , WindowType . TAB );
Use existing window handle
Creates a browsing context for the existing tab/window to run commands.
Java
Ruby
JavaScript
Kotlin
Selenium v4.8
String id = driver . getWindowHandle ();
BrowsingContext browsingContext = new BrowsingContext ( driver , id );
Open a window with a reference browsing context
A reference browsing context is a top-level browsing context .
The API allows to pass the reference browsing context, which is used to create a new window. The implementation is operating system specific.
Java
Ruby
JavaScript
Kotlin
Selenium v4.8
BrowsingContext
browsingContext =
new BrowsingContext ( driver , WindowType . WINDOW , driver . getWindowHandle ());
Open a tab with a reference browsing context
A reference browsing context is a top-level browsing context .
The API allows to pass the reference browsing context, which is used to create a new tab. The implementation is operating system specific.
Java
Ruby
JavaScript
Kotlin
Selenium v4.8
BrowsingContext
browsingContext =
new BrowsingContext ( driver , WindowType . TAB , driver . getWindowHandle ());
Navigate to a URL
Java
Ruby
JavaScript
Kotlin
Selenium v4.8
BrowsingContext browsingContext = new BrowsingContext ( driver , WindowType . TAB );
NavigationResult info = browsingContext . navigate ( "https://www.selenium.dev/selenium/web/bidi/logEntryAdded.html" );
Navigate to a URL with readiness state
Java
Ruby
JavaScript
Kotlin
Selenium v4.8
BrowsingContext browsingContext = new BrowsingContext ( driver , WindowType . TAB );
NavigationResult info = browsingContext . navigate ( "https://www.selenium.dev/selenium/web/bidi/logEntryAdded.html" ,
ReadinessState . COMPLETE );
Get browsing context tree
Provides a tree of all browsing contexts descending from the parent browsing context, including the parent browsing context.
Java
Ruby
JavaScript
Kotlin
Selenium v4.8
String referenceContextId = driver . getWindowHandle ();
BrowsingContext parentWindow = new BrowsingContext ( driver , referenceContextId );
parentWindow . navigate ( "https://www.selenium.dev/selenium/web/iframes.html" , ReadinessState . COMPLETE );
List < BrowsingContextInfo > contextInfoList = parentWindow . getTree ();
Get browsing context tree with depth
Provides a tree of all browsing contexts descending from the parent browsing context, including the parent browsing context upto the depth value passed.
Java
Ruby
JavaScript
Kotlin
Selenium v4.8
String referenceContextId = driver . getWindowHandle ();
BrowsingContext parentWindow = new BrowsingContext ( driver , referenceContextId );
parentWindow . navigate ( "https://www.selenium.dev/selenium/web/iframes.html" , ReadinessState . COMPLETE );
Get All Top level browsing contexts
Java
Ruby
JavaScript
Kotlin
Selenium v4.8
BrowsingContext window1 = new BrowsingContext ( driver , driver . getWindowHandle ());
BrowsingContext window2 = new BrowsingContext ( driver , WindowType . WINDOW );
List < BrowsingContextInfo > contextInfoList = window1 . getTopLevelContexts ();
Close a tab/window
Java
Ruby
JavaScript
Kotlin
Selenium v4.8
BrowsingContext window1 = new BrowsingContext ( driver , WindowType . WINDOW );
BrowsingContext window2 = new BrowsingContext ( driver , WindowType . WINDOW );
window2 . close ();
2 - BiDirectional API (W3C compliant)
Page being translated from
English to Portuguese. Do you speak Portuguese? Help us to translate
it by sending us pull requests!
This section contains the APIs related to logging.
Listen to console.log
events
Listen to the console.log
events and register callbacks to process the event.
Java
Ruby
JavaScript
Kotlin
Selenium v4.8
try ( LogInspector logInspector = new LogInspector ( driver )) {
CompletableFuture < ConsoleLogEntry > future = new CompletableFuture <>();
logInspector . onConsoleEntry ( future :: complete );
driver . get ( "https://www.selenium.dev/selenium/web/bidi/logEntryAdded.html" );
driver . findElement ( By . id ( "consoleLog" )). click ();
ConsoleLogEntry logEntry = future . get ( 5 , TimeUnit . SECONDS );
const inspector = await LogInspector ( driver )
await inspector . onConsoleEntry ( function ( log ) {
logEntry = log
})
await driver . get ( 'https://www.selenium.dev/selenium/web/bidi/logEntryAdded.html' )
await driver . findElement ({ id : 'consoleLog' }). click ()
assert . equal ( logEntry . text , 'Hello, world!' )
assert . equal ( logEntry . realm , null )
assert . equal ( logEntry . type , 'console' )
assert . equal ( logEntry . level , 'info' )
assert . equal ( logEntry . method , 'log' )
assert . equal ( logEntry . stackTrace , null )
assert . equal ( logEntry . args . length , 1 )
Listen to JS Exceptions
Listen to the JS Exceptions
and register callbacks to process the exception details.
Java
Ruby
JavaScript
Kotlin
try ( LogInspector logInspector = new LogInspector ( driver )) {
CompletableFuture < JavascriptLogEntry > future = new CompletableFuture <>();
logInspector . onJavaScriptException ( future :: complete );
driver . get ( "https://www.selenium.dev/selenium/web/bidi/logEntryAdded.html" );
driver . findElement ( By . id ( "jsException" )). click ();
JavascriptLogEntry logEntry = future . get ( 5 , TimeUnit . SECONDS );
const inspector = await LogInspector ( driver )
await inspector . onJavascriptException ( function ( log ) {
logEntry = log
})
await driver . get ( 'https://www.selenium.dev/selenium/web/bidi/logEntryAdded.html' )
await driver . findElement ({ id : 'jsException' }). click ()
assert . equal ( logEntry . text , 'Error: Not working' )
assert . equal ( logEntry . type , 'javascript' )
assert . equal ( logEntry . level , 'error' )
Listen to JS Logs
Listen to all JS logs at all levels and register callbacks to process the log.
Java
Ruby
JavaScript
Kotlin
Selenium v4.8
try ( LogInspector logInspector = new LogInspector ( driver )) {
CompletableFuture < JavascriptLogEntry > future = new CompletableFuture <>();
logInspector . onJavaScriptLog ( future :: complete );
driver . get ( "https://www.selenium.dev/selenium/web/bidi/logEntryAdded.html" );
driver . findElement ( By . id ( "jsException" )). click ();
JavascriptLogEntry logEntry = future . get ( 5 , TimeUnit . SECONDS );