Skip to content

アーキテクチャ ​

このキットは Playwright / Puppeteer と同じく、ブラウザ → ページ(コンテキスト)→ 要素 の層で考えます。

CDP スタック ​

クラス役割
CDPCore--remote-debugging-pipe ロジックで CDP 送受信
CDPCoreViaWebSocketWebSocket(--remote-debugging-port)ロジックでの CDP 送受信(既存セッション、または OpenBrowserAndConnectCDP による起動込み接続)
CDPCoreViaWebView2WebView2(ICoreWebView2)を直接叩く3つ目のtransport。COM/vtableと機械語サンク経由でCDPコマンドを送受信。拡張機能インストール等、CDPの外側にあるWebView2固有機能も一部プロパティ/メソッドとして公開(v3.0.0〜、v3.1.0で拡張機能対応)
CDPHostローカルPC上のブラウザプロセスに関する機能(起動・ポリシーチェック・後始末など)を集約。WebView2は対象外(v3.0.0〜、CDPBrowser/CDPCoreから分離。v3.1.0でCDPCoreHostから改名)
BrowserCapabilities起動時のオプションを1つにまとめた設定保持クラス(使い切り)。既定値はワークシートから読み込み、Set_○○ で上書き(API)
ReattachOptions再接続時のオプションを1つにまとめた設定保持クラス(使い切り)。制御経路(Pipe / Port / WebView2)を指定(API)
CDPBrowserプロセス起動・タブ一覧・ブラウザ単位の ExecuteCDP
CDPContext1 タブ分のナビ・JS・要素検索・イベント
CDPElementクリック・入力・属性・Shadow DOM / iframe
BiDiCDPJsonCDP / BiDi 応答の高速 JSON ビュー

起動は BrowserCapabilities、再接続は ReattachOptions という、設定保持専用のオプションオブジェクトを起動系/再接続系メソッドに渡します。通信経路(Pipe / Port / WebView2)は、再接続では ReattachOptions の Set_PipeMode / Set_WebSocketMode / Set_WebView2Mode で指定します(詳細は 再接続 (reattach))。

BiDi スタック ​

クラス役割
WebDriverBiDiCoremapperTab.js(chromium-bidi)を CDP 上に載せ BiDi を中継
WebDriverBiDiModeセッション・タブ・購読・ExecuteBiDi
WebDriverBiDiContext1 browsing context のナビ・jsEval・CDP 変換

BiDi は内部的に CDP パイプ(または WebSocket)の上で動きます。足りない操作は次のどちらかで CDP 実行可能です。

設定シートの位置づけ ​

ShSetting01_StartBrowser は「exe パス・プロファイル・起動引数等」を読み、内部で BrowserCapabilities を生成して上記スタックを組み立てる エントリポイント です。日常利用ではクラスを New せず、Start○○ModeContext を使うのが安全です。

通信経路 ​

Pipe・WebSocket・WebView2 の3ルートに対応しております。

  • Pipeルート: --remote-debugging-pipeとして起動します。同一PCで自動化する場合はこれ1択です。
  • WebSocketルート: --remote-debugging-port で起動しているブラウザに接続してから自動化を行います。設定シートの UseWebSocket セルを TRUE にすれば、Start○○Mode/Start○○ModeContext いずれからでもローカルブラウザの起動から一気に行うことも可能です(v3.2.0〜、Context版も対応)。WebSocket モードでの制御について を参照。
  • WebView2ルート(v3.0.0〜): デバッグポートもパイプも使わず、WebView2 SDK(ICoreWebView2)を直接叩いて CDP をやり取りします。ExcelのUserFormにブラウザを埋め込みたい場合の経路です。WebView2モードでの制御について を参照。

関連 ​

Excel VBA × CDP / WebDriver BiDi