タイムアウト設定方法について
CDP / BiDi のコマンド結果待ちや、起動直後の遷移完了判定などに使う待機上限です。デフォルトは 30 秒です。
「この処理、時間がかかるな」と分かっているときは、意図的に伸ばして使ってください。
TimeOutSecond
vb
Property Let TimeOutSecond(TimeSec As Double)LET 専用(書き込みのみ)です。設定中の値を読み返すことはできません。
主な用途:
- 最初のブラウザ起動時の遷移完了判定
- CDP-Json / BiDi-Json コマンド結果を得るまでの待ち時間
設定できる主なクラス:
| クラス | 用途 |
|---|---|
CDPBrowser | ブラウザ単位のコマンド待ち |
CDPContext | タブ単位のコマンド待ち・起動遷移など |
WebDriverBiDiMode | BiDi コマンド結果待ち |
使い方
vb
Dim t As CDPContext
Set t = ShSetting01_StartBrowser.StartCDPModeContext
' 重いページや遅い応答が分かっているとき
t.TimeOutSecond = 60
t.navigate "https://example.com/heavy"
' ... 通常どおり操作 ...
t.InheritanceCDPBrowser.quitブラウザ側にも同様に設定できます。
vb
Dim b As CDPBrowser
Set b = ShSetting01_StartBrowser.StartCDPMode
b.TimeOutSecond = 90BiDi の場合:
vb
Dim t As WebDriverBiDiContext
Set t = ShSetting01_StartBrowser.StartBiDiModeContext
t.InheritanceWebDriverBiDiMode.TimeOutSecond = 60TIP
タイムアウトを伸ばしても、実際にハングしているパイプ/WebSocket までは救えません。接続自体が死んでいる場合は 再接続 (reattach) を検討してください。
TimerCounter(自前ループ用)
VBA 組み込みの Timer 関数は、日付が変わると 0 に戻るため、深夜をまたぐと経過時間判定がおかしくなります。
TimerCounter はその代わりにどうぞ。単調増加の経過ミリ秒を返すので、自前ループのタイムアウト判定に使えます。
vb
Public Function TimerCounter() As Double ' 経過ミリ秒vb
Dim t As CDPContext
Set t = ShSetting01_StartBrowser.StartCDPModeContext
Dim startMs As Double
startMs = t.InheritanceCDPBrowser.TimerCounter
Do
' ... ポーリングなど ...
If t.InheritanceCDPBrowser.TimerCounter - startMs > 5000 Then Exit Do ' 5 秒で打ち切り
DoEvents
LoopCDPBrowser / CDPContext / WebDriverBiDiMode から利用できます。

