TabbitBlog

n8nでブラウザーを呼び出し結果を検証する

サブワークフローからブラウザーを呼び、応答を検証し、失敗後は書き直す前に状態を読み取ります。

この記事の内容
  1. 対象サイトのn8nノードがない場合
  2. ワークフローとブラウザーを分ける
  3. サブワークフローをインポートする
  4. 応答を検証する
  5. 再試行前に状態を読む
  6. 一つの操作と確認から始める

対象サイトのn8nノードがない場合

許可されたAPIが操作を提供するか先に確認します。描画された要素やログイン済みページが必要なら、HTTP経由でブラウザー実行環境につなぎます。通常のワークフローで入力、応答、分岐を管理し、AI Agentからはサブワークフローを一つのツールとして呼べます。

テスト管理画面なら、ブラウザーがConfirm demoを押し、状態を読み取ります。n8nは操作IDを保存して実際に変わったか確認します。応答が失敗しても操作が完了している場合があるので、もう一度押す前に状態を照会します。 ブラウザー自動化ツール 検索とブラウザー操作

ワークフローとブラウザーを分ける

層担当残す情報
親ワークフローまたはAI Agent許可済みの操作を選び一件送る操作IDと対象
ブラウザーサブワークフロー検証、呼び出し、応答の判定構造化された結果か確認待ち
ブラウザー開く、対象を確認、操作、読み戻すレコードID、前後の状態
アプリまたは永続ストア不明な結果を調べ、重複を防ぐ確認済みの結果または不明

HTTP Requestはサービスを呼び、ブラウザーがページとセッションを使います。操作を限定し、実行側の信頼できる設定からテストページを選びます。ログイン済みなら先にアカウントを確かめます。n8nの利用者はデータ抽出と画面操作の違いや、同じトリガーが二度動いた場合の重複を話題にしています。 既存ブラウザーに接続 ログインセッションの確認 ブラウザーの議論 冪等性の議論

サブワークフローをインポートする

n8n JSON と Tabbitのテストアダプター を取得します。同じコンピューターにn8n、Node.js、Tabbit CLIを用意します。外部アカウントは使わず、合成ページのボタンで確認します。アダプターを起動し、JSONをインポートして Manual Test を実行します。

node tabbit-fixture-adapter.mjs

アダプターはループバックの3219ポートを使います。n8nがコンテナや別ホストで動くと、localhostはそちらを指します。二つのHTTPノードを変更する前に許可された接続を設定します。 クラウドのlocalhost例

親のAI Agentに Call n8n Workflow Tool を追加し、インポートしたサブワークフローを選び、operation_id と scenario を Workflow Tool Input に渡します。呼び出しごとに一件にします。本番用のIDは通常のノードで元レコードと操作から決め、再試行で変えません。 Call n8n Workflow Tool サブワークフローのデータ

応答を検証する

HTTPステータス、操作ID、テストレコードID、初期OFF、最終ON、書き込み一件を照合します。必要な値がない成功応答は確認待ちに回します。エージェントが結果を要約しても、後続ノードは検証済みの値で分岐します。

{
  "operation_id": "E09-lost-response",
  "outcome": "reconciled",
  "receipt_source": "read_back",
  "http_status": 200,
  "fixture_id": "E09-FIXTURE",
  "state": "ON",
  "writes": 1,
  "replay": false
}

この http_status はGETの結果です。POSTの失敗は実行ログに別途残します。ネットワークエラーでHTTP状態がない場合も結果は不明です。 HTTP Requestノード

再試行前に状態を読む

場面確認期待する結果
正常な応答POSTでレコードとONを確認confirmed、書き込み一件
変更後に応答が失敗POSTが503、GETで同じ操作とONを確認reconciled、書き込み一件
状態が不明POSTが503、GETで操作を確認できないneeds_review、再送しない
確認済みIDを再利用保存済み結果を返す同じ結果、書き込みは合計一件

アダプターの記録はメモリ上です。本番は永続ストア、安定した一意キー、再起動後の読み取りが必要です。書く前に許可済みの対象と操作を保存します。確認済みなら結果を返し、不明なら照会や人の確認に回します。同じキーで重複を防げるか、未実行を人が確認して承認したときだけ再試行します。 n8nのエラー処理 フォーム保存を確認する例

ダウンロード用ワークフローを n8n 2.46.6 と Node.js 24.16.0 の環境にインポートし、別のローカルワークフローから1回につき1件の入力で呼び出しました。初回は confirmed(200)、reconciled(503 の後に 200)、needs_review(503 の後に 404)を返しました。アダプターが記録した Tabbit のクリックは2回です。同じ ID で再実行すると、完了済みの2件は保存済みの受領記録を返し、残り1件は確認待ちのままで、追加クリックはありませんでした。テストには模擬ページを使い、言語モデルは呼び出していません。

一つの操作と確認から始める

AI Agentをつなぐ前に手動テストを実行します。正常、照会後の確認、確認待ちが別の結果になるか確かめます。実際の業務アカウントで試すなら読み取りから始めます。 最初のブラウザー作業 エージェントのツール利用

よくある質問

対象サイトのn8nノードがない場合は?

範囲を限定したブラウザーサブワークフローをツールにするか、HTTP Requestでブラウザーサービスを呼び出します。

HTTP Requestはブラウザーですか?

HTTPインターフェースを呼びます。描画、クリック、許可済みセッションはブラウザー実行環境が担当します。

ブラウザーは何を返すべきですか?

操作ID、結果、レコードID、実際に読んだ状態と検証に必要な証拠を返します。

送信に失敗したらすぐ再試行しますか?

同じ操作IDで状態を確認します。不明なままなら人の確認に回します。

再試行では新しいIDを使いますか?

同じ操作では安定したIDを再利用します。別の操作やレコードには別のIDを使います。

次のステップへ

Tabbit と一緒に仕事をしましょう。

タブをまたいで調査し、繰り返しのブラウザ作業を自動化し、あらゆる文脈を手の届くところに。