Skip to content

ReattachOptions ​

起動済みのブラウザへ再接続(reattach)するときのオプション設定を、1つにまとめたクラスです。CDPBrowser.reattach / CDPContext.reattach / WebDriverBiDiMode.reattach / WebDriverBiDiContext.reattach の引数に渡します。

起動時のオプションをまとめた BrowserCapabilities の再接続版です。再接続では特に、どの制御経路(Pipe / Port / WebView2)でつなぎ直すかを必ず指定する必要があります。

  • BrowserCapabilities と同じく、起動に使ったあとは破棄される**使い切り(ワンショット)**です
  • ReattachOptions という名前そのものが、そのまま使える既定インスタンスです(New 不要)

使い方 ​

制御経路を指定して、reattach に渡します。

vb
Dim UserName As String
UserName = ShSetting01_StartBrowser.CurrentUserName

' 1. 制御経路を指定する(Pipe の例)
ReattachOptions.Set_PipeMode = UserName

' 2. reattach に渡す
Dim b As New CDPBrowser
b.reattach ReattachOptions

' 3. あとは通常どおり
Dim t As CDPContext
Set t = b.getTab(setMain:=True)
t.navigate "https://example.com"

渡す先のメソッド ​

クラスメソッド戻り値
CDPBrowserreattach(reattachInfo As ReattachOptions)なし(失敗時は VBA エラー)
CDPContextreattach(reattachInfo As ReattachOptions, Optional reuseSession As Boolean) As Boolean既存タブへの接続成功可否
WebDriverBiDiModereattach(reattachInfo As ReattachOptions)なし(失敗時は VBA エラー)
WebDriverBiDiContextreattach(reattachInfo As ReattachOptions) As Boolean既存 context への接続成功可否

詳しい流れは 再接続ガイド を参照してください。

制御経路の設定 ​

次の3つのうち、いずれか1つを必ず指定します。どれも指定せずに reattach へ渡すと、VBA エラーになります。複数を指定した場合は、最後に指定したものだけが有効です(内部の通信コアが作り直されるため)。

いずれも、識別名称(UserName)に紐づく接続情報を Excel テーブルから読み取ります。該当する行が無い場合は、その場で VBA エラーになります。

プロパティ経路使い方
Set_PipeModePipe(--remote-debugging-pipe)ReattachOptions.Set_PipeMode = UserName
Set_WebSocketModePort(--remote-debugging-port)ReattachOptions.Set_WebSocketMode(ws) = UserName(ws は接続済みの CDPCoreViaWebSocket)
Set_WebView2ModeWebView2ReattachOptions.Set_WebView2Mode(wv) = UserName(wv は接続済みの CDPCoreViaWebView2)
vb
' Port の例:既存ブラウザへ WebSocket 接続してから、その接続を渡す
Dim ws As CDPCoreViaWebSocket
Set ws = New CDPCoreViaWebSocket        ' ※`As New` で宣言しないこと
Debug.Print ws.AutoConnectPageCDP(UserName)

ReattachOptions.Set_WebSocketMode(ws) = UserName

Dim ws As New CDPCoreViaWebSocket は使わない

As New で宣言すると、Nothing 判定のたびに自動で New されてしまうため、接続オブジェクトの受け渡しで意図しない挙動になります。Dim ws As CDPCoreViaWebSocket と Set ws = New CDPCoreViaWebSocket に分けて書いてください。

その他の設定 ​

プロパティ型既定値意味
Set_DestructionBooleanTrue再接続後に、通信バッファーに溜まっている古いデータを破棄するか。False にすると、破棄せずにイベント情報を受け取ります(WinSock ハンドルを使いまわす場合など)
Set_EnableUserAgentOverrideBooleanシートのデバッグ設定ブラウザ本来の User-Agent の末尾に、このツールのサインを追記するか

WebDriver BiDi 用 ​

BiDi の再接続で、BiDi-CDP Mapper が再始動された場合に使われます。

プロパティ型既定値意味
Set_BiDiSessionCapabilitiesRequestDictionary(Property Set)未設定再始動後の session.new に渡す capabilities
Set_BiDiViewTab_BiDiCDPMapperBooleanシートのデバッグ設定Mapper のコンソールタブを表示するか
Set_BiDiViewDebugLogForBiDiCDPMapperBooleanシートのデバッグ設定Mapper 内部のデバッグログを記録するか

使い切り(ワンショット)の仕様 ​

reattach を呼ぶと、このオブジェクトは自動で破棄されます(既定インスタンスの ReattachOptions も含みます)。次に ReattachOptions を使うと新しいインスタンスとして再生成され、制御経路は未設定の状態から始まります。reattach のたびに、制御経路を指定し直してください。

vb
ReattachOptions.Set_PipeMode = UserName
b.reattach ReattachOptions            ' ここで破棄される

' もう一度 reattach するなら、経路の指定からやり直す
ReattachOptions.Set_PipeMode = UserName
t.reattach ReattachOptions

関連 ​

Excel VBA × CDP / WebDriver BiDi