概要
セレクタは、どの DOM 要素を操作するかを指定します。複数のフィールドをフォールバック戦略として使用し、優先順位に従って順番にマッチを試みます。セレクタフィールド
解決パイプライン
セレクタは6段階のパイプラインで解決されます:1
決定論的解決
優先順位順にセレクタフィールドを試行(id → ariaLabel → … → name)。AI 不要。
2
AI セレクタ解決
決定論的解決が失敗した場合、AI が現在のページスナップショットを分析して対象要素を特定。
3
スマートリトライ(3回)
タイムアウトを増やしながらリトライし、試行間で DOM の変化を待機。
4
スクロール回復
画面外の要素を見つけるためにページをスクロール。
5
Agent Fallback
AI エージェントが代替パスを探索して対象要素に到達。Pro+ プランが必要。
6
Vision Fallback
スクリーンショットを撮影し、Vision AI で要素を視覚的に特定。Pro+ プランが必要。
例
- まず
#submit-btnを試行 - id が見つからない場合
[aria-label="Submit form"]にフォールバック - aria-label が失敗した場合
innerTextのマッチにフォールバック roleとtagNameは全体を通じて追加フィルタとして使用
rect(位置フォールバック)
最終手段の決定論的戦略です。座標はビューポート相対です。
位置ベースのセレクタはレイアウト変更で壊れやすいです。可能な限りセマンティックセレクタ(
id、ariaLabel、dataTestId)を使用してください。dataAttributes
カスタム data-* 属性で要素をマッチ:
<div data-row-id="42" data-status="active"> にマッチします。
ベストプラクティス
- 安定した識別子を優先 —
id、dataTestId、ariaLabelは CSS セレクタや XPath よりも UI の再設計に強い。 rectは避ける — 位置セレクタはレイアウト変更で壊れる。セマンティックセレクタがない場合のみ使用。innerTextは短く — 長いテキストマッチは壊れやすい。フィールドは200文字に制限。- セレクタキャッシュを有効化 — 繰り返し実行する場合、
--enable-selector-cacheで成功した解決結果を永続化。