アーキテクチャ
このキットは Playwright / Puppeteer と同じく、ブラウザ → ページ(コンテキスト)→ 要素 の層で考えます。
CDP スタック
| クラス | 役割 |
|---|---|
CDPCore | --remote-debugging-pipe ロジックで CDP 送受信 |
CDPCoreViaWebSocket | WebSocket(--remote-debugging-port)ロジックでの CDP 送受信(既存セッション、または OpenBrowserAndConnectCDP による起動込み接続) |
CDPCoreViaWebView2 | WebView2(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 |
CDPContext | 1 タブ分のナビ・JS・要素検索・イベント |
CDPElement | クリック・入力・属性・Shadow DOM / iframe |
BiDiCDPJson | CDP / BiDi 応答の高速 JSON ビュー |
起動は BrowserCapabilities、再接続は ReattachOptions という、設定保持専用のオプションオブジェクトを起動系/再接続系メソッドに渡します。通信経路(Pipe / Port / WebView2)は、再接続では ReattachOptions の Set_PipeMode / Set_WebSocketMode / Set_WebView2Mode で指定します(詳細は 再接続 (reattach))。
BiDi スタック
| クラス | 役割 |
|---|---|
WebDriverBiDiCore | mapperTab.js(chromium-bidi)を CDP 上に載せ BiDi を中継 |
WebDriverBiDiMode | セッション・タブ・購読・ExecuteBiDi |
WebDriverBiDiContext | 1 browsing context のナビ・jsEval・CDP 変換 |
BiDi は内部的に CDP パイプ(または WebSocket)の上で動きます。足りない操作は次のどちらかで CDP 実行可能です。
WebDriverBiDiContext.UpgradeBiDiPlus- BiDi+
goog:cdp.sendCommand(低レイヤー BiDi / 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モードでの制御について を参照。
関連
- 設計思想
- CDP と BiDi
- 再接続 (reattach)
- WebSocketモードでできること
- WebView2モードでできること
- コアロジック徹底比較 — Puppeteer / Playwright の実ソースとの突き合わせ

