ドライバーセッション セッションの開始と停止は、ブラウザーを開いたり閉じたりするためのものです。
セッションの作成 新しいセッションの作成は、W3C コマンド New session  に対応しています。
セッションは、新しいDriverクラスオブジェクトを初期化することによって自動的に作成されます。
各言語では、次のいずれかのクラス (または同等のもの) の引数を使用してセッションを作成することができます。
ローカルドライバー ローカルドライバーを起動するための主な一意の引数には、ローカルコンピューターで必要なドライバーサービスを起動するための情報が含まれます。
Service オブジェクトはローカルドライバーにのみ適用され、ブラウザーのドライバーに関する情報を提供します。
Java 
Python 
CSharp 
Ruby 
JavaScript 
Kotlin       driver  =  Selenium :: WebDriver . for  :chrome ,  options :  options  リモートドライバー リモートドライバーを起動するための主な一意の引数には、コードを実行する場所に関する情報を含みます。
詳細は、リモートドライバー をご覧ください。
セッションの終了 セッションの終了に対するW3Cコマンドは、セッションの削除 です。
重要: quit メソッドは close メソッドとは異なり、
セッションを終了するには常に quit を使用することをお勧めします。
Java 
Python 
CSharp 
Ruby 
JavaScript 
Kotlin 1 - ブラウザーオプション これらのCapabilityはすべてのブラウザで共通です。
Selenium 3 では、Capabilitiesは Desired Capabilities クラスを使用してセッションで定義していました。
Selenium 4 以降、ブラウザ オプション クラスを使用する必要があります。
リモート ドライバー セッションの場合、使用するブラウザーを決めるため、ブラウザーオプションインスタンスが必要です。
これらのオプションは、Capabilities  の w3c仕様で説明しています。
各ブラウザには、w3c仕様で定義しているものに加えて定義可能な カスタム オプション  があります。
browserName Browser name is set by default when using an Options class instance.
Java 
Python 
CSharp 
Ruby 
JavaScript 
Kotlin       options . page_load_strategy  =  :normal  browserVersion This capability is optional, this is used to set the available browser version at remote end.
In recent versions of Selenium, if the version is not found on the system,
it will be automatically downloaded by Selenium Manager 
Java 
Python 
CSharp 
Ruby 
JavaScript 
Kotlin pageLoadStrategy 3種類のページ読み込み戦略を利用できます。
ページ読み込み戦略は、次の表で説明しています。
戦略 準備完了状態 注釈 normal complete デフォルトで使用され、すべてのリソースをダウンロードするのを待ちます eager interactive DOM アクセスの準備は整っていますが、画像などの他のリソースはまだロード中の可能性があります none Any WebDriver をまったくブロックしません 
ドキュメントの document.readyState 
プロパティは、現在のドキュメントの読み込み状態を示します。
URL 経由で新しいページに移動する場合、デフォルトでは、WebDriver は、ドキュメントの準備完了状態が完了するまで、
ナビゲーション メソッド (driver.navigate().get() など) の完了を保留します。
これは必ずしもページの読み込みが完了したことを意味するわけではありません。 
特に、Ready State が完了した後に JavaScript を使用してコンテンツを動的に読み込むシングル ページ アプリケーションのようなサイトの場合はそうです。
また、この動作は、要素のクリックまたはフォームの送信の結果であるナビゲーションには適用されないことに注意してください。
自動化にとって重要ではないアセット (画像、css、js など) をダウンロードした結果、ページの読み込みに時間がかかる場合は、
デフォルトのパラメーターである normal を eager または none に変更して、セッションの読み込みを高速化できます。
この値はセッション全体に適用されるため、 待機戦略 
が不安定さを最小限に抑えるのに十分であることを確認してください。
normal (デフォルト) WebDriver は load 
イベント検知するまで待機します。
Java 
Python 
CSharp 
Ruby 
JavaScript 
Kotlin      ChromeOptions   chromeOptions   =   new   ChromeOptions (); 
      chromeOptions . setPageLoadStrategy ( PageLoadStrategy . NORMAL ); 
      WebDriver   driver   =   new   ChromeDriver ( chromeOptions );     options . page_load_strategy  =  'normal' 
     driver  =  webdriver . Chrome ( options = options ) 
 using  OpenQA.Selenium ; 
using  OpenQA.Selenium.Chrome ; 
 namespace  pageLoadStrategy  { 
  class  pageLoadStrategy  { 
     public  static  void  Main ( string []  args )  { 
       var  chromeOptions  =  new  ChromeOptions (); 
       chromeOptions . PageLoadStrategy  =  PageLoadStrategy . Normal ; 
       IWebDriver  driver  =  new  ChromeDriver ( chromeOptions ); 
       try  { 
         driver . Navigate (). GoToUrl ( "https://example.com" ); 
       }  finally  { 
         driver . Quit (); 
       } 
     } 
   } 
 }       options . page_load_strategy  =  :normal 
     it ( 'Navigate using normal page loading strategy' ,  async  function  ()  { 
       let  driver  =  await  env 
         . builder () 
         . setChromeOptions ( options . setPageLoadStrategy ( 'normal' )) 
         . build (); 
 
       await  driver . get ( 'https://www.selenium.dev/selenium/web/blank.html' );  import  org.openqa.selenium.PageLoadStrategy 
import  org.openqa.selenium.chrome.ChromeDriver 
import  org.openqa.selenium.chrome.ChromeOptions 
 fun  main ()  { 
  val  chromeOptions  =  ChromeOptions () 
   chromeOptions . setPageLoadStrategy ( PageLoadStrategy . NORMAL ) 
   val  driver  =  ChromeDriver ( chromeOptions ) 
   try  { 
     driver . get ( "https://www.google.com" ) 
   } 
   finally  { 
     driver . quit () 
   } 
 } eager WebDriver は、DOMContentLoaded 
イベントを検知するまで待機します。
Java 
Python 
CSharp 
Ruby 
JavaScript 
Kotlin      ChromeOptions   chromeOptions   =   new   ChromeOptions (); 
      chromeOptions . setPageLoadStrategy ( PageLoadStrategy . EAGER ); 
      WebDriver   driver   =   new   ChromeDriver ( chromeOptions );     options . page_load_strategy  =  'eager' 
     driver  =  webdriver . Chrome ( options = options )  using  OpenQA.Selenium ; 
using  OpenQA.Selenium.Chrome ; 
 namespace  pageLoadStrategy  { 
  class  pageLoadStrategy  { 
     public  static  void  Main ( string []  args )  { 
       var  chromeOptions  =  new  ChromeOptions (); 
       chromeOptions . PageLoadStrategy  =  PageLoadStrategy . Eager ; 
       IWebDriver  driver  =  new  ChromeDriver ( chromeOptions ); 
       try  { 
         driver . Navigate (). GoToUrl ( "https://example.com" ); 
       }  finally  { 
         driver . Quit (); 
       } 
     } 
   } 
 }       options . page_load_strategy  =  :eager 
     it ( 'Navigate using eager page loading strategy' ,  async  function  ()  { 
       let  driver  =  await  env 
         . builder () 
         . setChromeOptions ( options . setPageLoadStrategy ( 'eager' )) 
         . build (); 
 
       await  driver . get ( 'https://www.selenium.dev/selenium/web/blank.html' );  import  org.openqa.selenium.PageLoadStrategy 
import  org.openqa.selenium.chrome.ChromeDriver 
import  org.openqa.selenium.chrome.ChromeOptions 
 fun  main ()  { 
  val  chromeOptions  =  ChromeOptions () 
   chromeOptions . setPageLoadStrategy ( PageLoadStrategy . EAGER ) 
   val  driver  =  ChromeDriver ( chromeOptions ) 
   try  { 
     driver . get ( "https://www.google.com" ) 
   } 
   finally  { 
     driver . quit () 
   } 
 } none WebDriver は、最初のページがダウンロードされるまで待機します。
Java 
Python 
CSharp 
Ruby 
JavaScript 
Kotlin      ChromeOptions   chromeOptions   =   new   ChromeOptions (); 
      chromeOptions . setPageLoadStrategy ( PageLoadStrategy . NONE ); 
      WebDriver   driver   =   new   ChromeDriver ( chromeOptions );     options . page_load_strategy  =  'none' 
     driver  =  webdriver . Chrome ( options = options )  using  OpenQA.Selenium ; 
using  OpenQA.Selenium.Chrome ; 
 namespace  pageLoadStrategy  { 
  class  pageLoadStrategy  { 
     public  static  void  Main ( string []  args )  { 
       var  chromeOptions  =  new  ChromeOptions (); 
       chromeOptions . PageLoadStrategy  =  PageLoadStrategy . None ; 
       IWebDriver  driver  =  new  ChromeDriver ( chromeOptions ); 
       try  { 
         driver . Navigate (). GoToUrl ( "https://example.com" ); 
       }  finally  { 
         driver . Quit (); 
       } 
     } 
   } 
 }       options . page_load_strategy  =  :none 
     it ( 'Navigate using none page loading strategy' ,  async  function  ()  { 
       let  driver  =  await  env 
         . builder () 
         . setChromeOptions ( options . setPageLoadStrategy ( 'none' )) 
         . build (); 
 
       await  driver . get ( 'https://www.selenium.dev/selenium/web/blank.html' );  import  org.openqa.selenium.PageLoadStrategy 
import  org.openqa.selenium.chrome.ChromeDriver 
import  org.openqa.selenium.chrome.ChromeOptions 
 fun  main ()  { 
  val  chromeOptions  =  ChromeOptions () 
   chromeOptions . setPageLoadStrategy ( PageLoadStrategy . NONE ) 
   val  driver  =  ChromeDriver ( chromeOptions ) 
   try  { 
     driver . get ( "https://www.google.com" ) 
   } 
   finally  { 
     driver . quit () 
   } 
 } これにより、リモートエンドのオペレーティングシステムが識別され、 platformName を取得するとOS名が返されます。
クラウドベースのプロバイダーでは、 platformName を設定すると、リモートエンドのOSが設定されます。
Java 
Python 
CSharp 
Ruby 
JavaScript 
Kotlin       options . platform_name  =  'Windows 10' 
       options . browser_version  =  'latest'  acceptInsecureCerts この機能は、セッション中のナビゲーション中に、期限切れ(または)無効な TLS証明書 が使用されているかどうかを確認します。
機能が false に設定されている場合、ナビゲーションでドメイン証明書の問題が発生すると、
insecure certificate error  が返されます。
true に設定すると、無効な証明書はブラウザーによって信頼されます。
すべての自己署名証明書は、デフォルトでこの機能によって信頼されます。
一度設定すると、 acceptInsecureCerts Capabilityはセッション全体に影響します。
Java 
Python 
CSharp 
Ruby 
JavaScript 
Kotlin },  {  browsers :  [ Browser . CHROME ,  Browser . FIREFOX ]}); timeouts WebDriverの セッション には特定の セッションタイムアウト 間隔が設定されており、
その間、ユーザーはスクリプトの実行またはブラウザーからの情報の取得の動作を制御できます。
各セッションタイムアウトは、以下で説明するように、異なる タイムアウト の組み合わせで構成されます。
Script Timeout: 現在のブラウジングコンテキストで実行中のスクリプトをいつ中断するかを指定します。
新しいセッションがWebDriverによって作成されると、デフォルトのタイムアウト 30,000  が課されます。
Java 
Python 
CSharp 
Ruby 
JavaScript 
Kotlin Page Load Timeout: 現在のブラウジングコンテキストでWebページをロードする必要がある時間間隔を指定します。
新しいセッションがWebDriverによって作成されると、デフォルトのタイムアウト 300,000  が課されます。
ページの読み込みが指定/デフォルトの時間枠を制限する場合、スクリプトは TimeoutException  によって停止されます。
Java 
Python 
CSharp 
Ruby 
JavaScript 
Kotlin Implicit Wait Timeout これは、要素を検索するときに暗黙的な要素の検索戦略を待つ時間を指定します。
新しいセッションがWebDriverによって作成されると、デフォルトのタイムアウト 0  が課されます。
Java 
Python 
CSharp 
Ruby 
JavaScript 
Kotlin unhandledPromptBehavior 現在のセッションの ユーザープロンプトハンドラー の状態を指定します。
デフォルトでは、 dismiss and notify (却下して通知する) 状態  となります。
User Prompt Handler これは、リモートエンドでユーザープロンプトが表示されたときに実行する必要があるアクションを定義します。
これは、 unhandledPromptBehavior Capabilityによって定義され、次の状態があります。
dismiss (却下) accept (受入) dismiss and notify (却下して通知) accept and notify (受け入れて通知) ignore (無視) 
Java 
Python 
CSharp 
Ruby 
JavaScript 
Kotlin setWindowRect リモート エンドがすべての サイズ変更および再配置 
コマンド  をサポートするかどうかを示します。
Java 
Python 
CSharp 
Ruby 
JavaScript 
Kotlin strictFileInteractability この新しいcapabilityは、厳密な相互作用チェックを input type = file  要素に適用する必要があるかどうかを示します。
厳密な相互作用チェックはデフォルトでオフになっているため、隠しファイルのアップロードコントロールで Element Send Keys 
を使用する場合の動作が変更されます。
Java 
Python 
CSharp 
Ruby 
JavaScript 
Kotlin proxy プロキシサーバーは、クライアントとサーバー間の要求の仲介役として機能します。
簡単に言えば、トラフィックはプロキシサーバーを経由して、要求したアドレスに戻り、戻ってきます。
Seleniumを使用した自動化スクリプト用のプロキシサーバーは、
ネットワークトラフィックをキャプチャする ウェブサイトによって行われた模擬バックエンドを呼び出す 複雑なネットワークトポロジーまたは厳格な企業の制限/ポリシーの下で、必要なWebサイトにアクセスします。 企業環境でブラウザがURLへの接続に失敗した場合、環境にアクセスするにはプロキシが必要であることが原因であることが最も可能性が高いです。
Selenium WebDriverは設定をプロキシする方法を提供します。
Move Code 
Java 
Python 
CSharp 
Ruby 
JavaScript 
Kotlin import   org.openqa.selenium.Proxy ; 
 import   org.openqa.selenium.WebDriver ; 
 import   org.openqa.selenium.chrome.ChromeDriver ; 
 import   org.openqa.selenium.chrome.ChromeOptions ; 
 
 public   class  ProxyTest   { 
    public   static   void   main ( String []   args )   { 
      Proxy   proxy   =   new   Proxy (); 
      proxy . setHttpProxy ( "<HOST:PORT>" ); 
      ChromeOptions   options   =   new   ChromeOptions (); 
      options . setCapability ( "proxy" ,   proxy ); 
      WebDriver   driver   =   new   ChromeDriver ( options ); 
      driver . get ( "https://www.google.com/" ); 
      driver . manage (). window (). maximize (); 
      driver . quit (); 
    } 
 } 
 from  selenium  import  webdriver 
 PROXY  =  "<HOST:PORT>" 
webdriver . DesiredCapabilities . FIREFOX [ 'proxy' ]  =  { 
"httpProxy" :  PROXY , 
"ftpProxy" :  PROXY , 
"sslProxy" :  PROXY , 
"proxyType" :  "MANUAL" , 
 } 
 with  webdriver . Firefox ()  as  driver : 
    driver . get ( "https://selenium.dev" ) 
 using  OpenQA.Selenium ; 
using  OpenQA.Selenium.Chrome ; 
 public  class  ProxyTest { 
public  static  void  Main ()  { 
ChromeOptions  options  =  new  ChromeOptions (); 
Proxy  proxy  =  new  Proxy (); 
proxy . Kind  =  ProxyKind . Manual ; 
proxy . IsAutoDetect  =  false ; 
proxy . SslProxy  =  "<HOST:PORT>" ; 
options . Proxy  =  proxy ; 
options . AddArgument ( "ignore-certificate-errors" ); 
IWebDriver  driver  =  new  ChromeDriver ( options ); 
driver . Navigate (). GoToUrl ( "https://www.selenium.dev/" ); 
} 
} 
let  webdriver  =  require ( 'selenium-webdriver' ); 
let  chrome  =  require ( 'selenium-webdriver/chrome' ); 
let  proxy  =  require ( 'selenium-webdriver/proxy' ); 
let  opts  =  new  chrome . Options (); 
 ( async  function  example ()  { 
opts . setProxy ( proxy . manual ({ http :  '<HOST:PORT>' })); 
let  driver  =  new  webdriver . Builder () 
. forBrowser ( 'chrome' ) 
. setChromeOptions ( opts ) 
. build (); 
try  { 
await  driver . get ( "https://selenium.dev" ); 
} 
finally  { 
await  driver . quit (); 
} 
}()); 
import  org.openqa.selenium.Proxy 
import  org.openqa.selenium.WebDriver 
import  org.openqa.selenium.chrome.ChromeDriver 
import  org.openqa.selenium.chrome.ChromeOptions 
 class  proxyTest  { 
fun  main ()  { 
         val  proxy  =  Proxy () 
         proxy . setHttpProxy ( "<HOST:PORT>" ) 
         val  options  =  ChromeOptions () 
         options . setCapability ( "proxy" ,  proxy ) 
         val  driver :  WebDriver  =  ChromeDriver ( options ) 
         driver [ "https://www.google.com/" ] 
         driver . manage (). window (). maximize () 
         driver . quit () 
     } 
 } 
2 - HTTP Client Configuration These allow you to set various parameters for the HTTP library
Java 
Python 
CSharp 
Ruby 
JavaScript 
Kotlin     client  =  Selenium :: WebDriver :: Remote :: Http :: Default . new ( open_timeout :  30 ,  read_timeout :  30 ) 
     expect ( client . open_timeout ) . to  eq  30  3 - Driver Service Class The Service classes are for managing the starting and stopping of drivers.
They can not be used with a Remote WebDriver session.
Service classes allow you to specify information about the driver,
like location and which port to use.
They also let you specify what arguments get passed
to the command line. Most of the useful arguments are related to logging.
Default Service instance To start a driver with a default service instance:
Java 
Python 
CSharp 
Ruby 
JavaScript 
Kotlin      ChromeDriverService   service   =   new   ChromeDriverService . Builder (). build (); 
      driver   =   new   ChromeDriver ( service ); Selenium v4.11 
    service  =  webdriver . ChromeService () 
     driver  =  webdriver . Chrome ( service = service )              var  service  =  ChromeDriverService . CreateDefaultService (); 
             driver  =  new  ChromeDriver ( service );      service  =  Selenium :: WebDriver :: Service . chrome 
     @driver  =  Selenium :: WebDriver . for  :chrome ,  service :  service  Driver location Note:  If you are using Selenium 4.6 or greater, you shouldn’t need to set a driver location.
If you can not update Selenium or have an advanced use case here is how to specify the driver location:
Java 
Python 
CSharp 
Ruby 
JavaScript 
Kotlin      ChromeDriverService   service   = 
          new   ChromeDriverService . Builder (). usingDriverExecutable ( driverPath ). build (); Selenium v4.11 
    service  =  webdriver . ChromeService ( executable_path = chromedriver_bin )  Selenium v4.9 
            var  service  =  ChromeDriverService . CreateDefaultService ( GetDriverLocation ( options ));  Selenium v4.8 
    service . executable_path  =  driver_path  Driver port If you want the driver to run on a specific port, you may specify it as follows:
Java 
Python 
CSharp 
Ruby 
JavaScript 
Kotlin      ChromeDriverService   service   =   new   ChromeDriverService . Builder (). usingPort ( 1234 ). build (); Selenium v4.11 
    service  =  webdriver . ChromeService ( port = 1234 )  
Logging Logging functionality varies between browsers. Most browsers allow you to
specify location and level of logs. Take a look at the respective browser page:
4 - Remote WebDriver Selenium lets you automate browsers on remote computers if
there is a Selenium Grid  running on them. The computer that
executes the code is referred to as the client computer, and the computer with the browser and driver is
referred to as the remote computer or sometimes as an end-node.
To direct Selenium tests to the remote computer, you need to use a Remote WebDriver class
and pass the URL including the port of the grid on that machine. Please see the grid documentation
for all the various ways the grid can be configured.
Basic Example The driver needs to know where to send commands to and which browser to start on the Remote computer. So an address
and an options instance are both required.
Java 
Python 
CSharp 
Ruby 
JavaScript 
Kotlin      ChromeOptions   options   =   new   ChromeOptions (); 
      driver   =   new   RemoteWebDriver ( gridUrl ,   options );     options  =  webdriver . ChromeOptions () 
     driver  =  webdriver . Remote ( command_executor = server ,  options = options )              var  options  =  new  ChromeOptions (); 
             driver  =  new  RemoteWebDriver ( GridUrl ,  options );      options  =  Selenium :: WebDriver :: Options . chrome 
     driver  =  Selenium :: WebDriver . for  :remote ,  url :  grid_url ,  options :  options  Uploads Uploading a file  is more complicated for Remote WebDriver sessions because the file you want to
upload is likely on the computer executing the code, but the driver on the
remote computer is looking for the provided path on its local file system.
The solution is to use a Local File Detector. When one is set, Selenium will bundle
the file, and send it to the remote machine, so the driver can see the reference to it.
Some bindings include a basic local file detector by default, and all of them allow
for a custom file detector.
Java 
Python 
CSharp 
Ruby 
JavaScript 
Kotlin Java does not include a Local File Detector by default, so you must always add one to do uploads.
     (( RemoteWebDriver )   driver ). setFileDetector ( new   LocalFileDetector ()); 
      WebElement   fileInput   =   driver . findElement ( By . cssSelector ( "input[type=file]" )); 
      fileInput . sendKeys ( uploadFile . getAbsolutePath ()); 
      driver . findElement ( By . id ( "file-submit" )). click (); Python adds a local file detector to remote webdriver instances by default, but you can also create your own class.
    driver . file_detector  =  LocalFileDetector () 
     file_input  =  driver . find_element ( By . CSS_SELECTOR ,  "input[type='file']" ) 
     file_input . send_keys ( upload_file ) 
     driver . find_element ( By . ID ,  "file-submit" ) . click ()  .NET adds a local file detector to remote webdriver instances by default, but you can also create your own class.
            (( RemoteWebDriver ) driver ). FileDetector  =  new  LocalFileDetector (); 
             IWebElement  fileInput  =  driver . FindElement ( By . CssSelector ( "input[type=file]" )); 
             fileInput . SendKeys ( uploadFile ); 
             driver . FindElement ( By . Id ( "file-submit" )). Click ();  Ruby adds a local file detector to remote webdriver instances by default, but you can also create your own lambda:
    driver . file_detector  =  -> (( filename ,  * ))  {  filename . include? ( 'selenium' )  &&  filename  } 
     file_input  =  driver . find_element ( css :  'input[type=file]' ) 
     file_input . send_keys ( upload_file ) 
     driver . find_element ( id :  'file-submit' ) . click  Downloads Chrome, Edge and Firefox each allow you to set the location of the download directory.
When you do this on a remote computer, though, the location is on the remote computer’s local file system.
Selenium allows you to enable downloads to get these files onto the client computer.
Enable Downloads in the Grid Regardless of the client, when starting the grid in node or standalone mode,
you must add the flag:
--enable-managed-downloads true
Enable Downloads in the Client The grid uses the se:downloadsEnabled capability to toggle whether to be responsible for managing the browser location.
Each of the bindings have a method in the options class to set this.
Java 
Python 
CSharp 
Ruby 
JavaScript 
Kotlin      ChromeOptions   options   =   new   ChromeOptions (); 
      options . setEnableDownloads ( true ); 
      driver   =   new   RemoteWebDriver ( gridUrl ,   options );     options  =  webdriver . ChromeOptions () 
     options . enable_downloads  =  True 
     driver  =  webdriver . Remote ( command_executor = server ,  options = options )              ChromeOptions  options  =  new  ChromeOptions 
             { 
                 EnableDownloads  =  true 
             }; 
 
             driver  =  new  RemoteWebDriver ( GridUrl ,  options );      options  =  Selenium :: WebDriver :: Options . chrome ( enable_downloads :  true ) 
     driver  =  Selenium :: WebDriver . for  :remote ,  url :  grid_url ,  options :  options  List Downloadable Files Be aware that Selenium is not waiting for files to finish downloading,
so the list is an immediate snapshot of what file names are currently in the directory for the given session.
Java 
Python 
CSharp 
Ruby 
JavaScript 
Kotlin      List < String >   files   =   (( HasDownloads )   driver ). getDownloadableFiles ();     files  =  driver . get_downloadable_files ()              IReadOnlyList < string >  names  =  (( RemoteWebDriver ) driver ). GetDownloadableFiles ();      files  =  driver . downloadable_files  Download a File Selenium looks for the name of the provided file in the list and downloads it to the provided target directory.
Java 
Python 
CSharp 
Ruby 
JavaScript 
Kotlin      (( HasDownloads )   driver ). downloadFile ( downloadableFile ,   targetDirectory );     driver . download_file ( downloadable_file ,  target_directory )      driver . download_file ( downloadable_file ,  target_directory )  Delete Downloaded Files By default, the download directory is deleted at the end of the applicable session,
but you can also delete all files during the session.
Java 
Python 
CSharp 
Ruby 
JavaScript 
Kotlin      (( HasDownloads )   driver ). deleteDownloadableFiles ();     driver . delete_downloadable_files ()              (( RemoteWebDriver ) driver ). DeleteDownloadableFiles ();      driver . delete_downloadable_files  Browser specific functionalities Each browser  has implemented special functionality that is available only to that browser.
Each of the Selenium bindings has implemented a different way to use those features in a Remote Session
Java 
Python 
CSharp 
Ruby 
JavaScript 
Kotlin Java requires you to use the Augmenter class, which allows it to automatically pull in implementations for
all interfaces that match the capabilities used with the RemoteWebDriver
     driver   =   new   Augmenter (). augment ( driver ); Of interest, using the RemoteWebDriverBuilder automatically augments the driver, so it is a great way
to get all the functionality by default:
         RemoteWebDriver . builder () 
              . address ( gridUrl ) 
              . oneOf ( new   ChromeOptions ()) 
              . setCapability ( "ext:options" ,   Map . of ( "key" ,   "value" )) 
              . config ( ClientConfig . defaultConfig ()) 
              . build (); .NET uses a custom command executor for executing commands that are valid for the given browser in the remote driver.
            var  customCommandDriver  =  driver  as  ICustomDriverCommandExecutor ; 
             customCommandDriver . RegisterCustomDriverCommands ( FirefoxDriver . CustomCommandDefinitions ); 
 
             var  screenshotResponse  =  customCommandDriver 
                 . ExecuteCustomDriverCommand ( FirefoxDriver . GetFullPageScreenshotCommand ,  null );  Ruby uses mixins to add applicable browser specific methods to the Remote WebDriver session;
the methods should always just work for you.
クライアントのリクエストをトレースする この機能は、Java クライアント バインディング (ベータ版以降) でのみ利用できます。
Remote WebDriver クライアントは Selenium Grid サーバーにリクエストを送信し、
Selenium Grid サーバーはリクエストを WebDriver に渡します。
HTTP リクエストをエンド ツー エンドでトレースするには、サーバー側とクライアント側でトレースを有効にする必要があります。
両端には、視覚化フレームワークを指すトレース エクスポーターのセットアップが必要です。
デフォルトでは、トレースはクライアントとサーバーの両方で有効になっています。
視覚化フレームワークの Jaeger UI と Selenium Grid 4 を設定するには、目的のバージョンの
トレースのセットアップ  を参照してください。
クライアント側のセットアップについては、以下の手順に従ってください。
必要な依存関係を追加する トレーシング エクスポーターの外部ライブラリのインストールは、Maven を使って実行できます。
プロジェクト pom.xml に opentelemetry-exporter-jaeger  および grpc-netty  の依存関係を追加します。
  <dependency> 
       <groupId> io.opentelemetry</groupId> 
       <artifactId> opentelemetry-exporter-jaeger</artifactId> 
       <version> 1.0.0</version> 
     </dependency> 
     <dependency> 
       <groupId> io.grpc</groupId> 
       <artifactId> grpc-netty</artifactId> 
       <version> 1.35.0</version> 
     </dependency> 
 クライアントの実行中に必要なシステムプロパティを追加/渡す System . setProperty ( "otel.traces.exporter" ,   "jaeger" ); 
 System . setProperty ( "otel.exporter.jaeger.endpoint" ,   "http://localhost:14250" ); 
 System . setProperty ( "otel.resource.attributes" ,   "service.name=selenium-java-client" ); 
 
 ImmutableCapabilities   capabilities   =   new   ImmutableCapabilities ( "browserName" ,   "chrome" ); 
 
 WebDriver   driver   =   new   RemoteWebDriver ( new   URL ( "http://www.example.com" ),   capabilities ); 
 
 driver . get ( "http://www.google.com" ); 
 
 driver . quit (); 
 
    ご希望のSeleniumのバージョンに必要な外部依存関係のバージョンの詳細については、
トレースのセットアップ  を参照してください。
詳細については、下記URLを参照してください。