这是本节的多页打印视图。
点击此处打印 .
返回本页常规视图 .
BiDirectional API (W3C compliant) 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 Chinese. Do you speak Chinese? 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 Chinese. Do you speak Chinese? 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         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 );  Selenium v4.8 
            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 );  Selenium v4.8 
        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         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 );