Tabbit部落格

瀏覽器 Agent 用 DOM 還是視覺?表單、截圖和 Canvas 怎麼選

比較 DOM、無障礙快照和截圖視覺,判斷網頁表單、Canvas 控制項或動態佈局應該用哪種輸入,並驗證動作結果。

本文目錄
  1. 核心結論
  2. 三種輸入各自提供什麼
  3. 用語義確定動作,用局部 DOM 確定紀錄
  4. 需要畫面資訊時再讀截圖
  5. 在 Tabbit 中處理同一分頁的表單和畫布
  6. 按當前問題決定下一步

瀏覽器能給出控制項的角色和無障礙名稱時,先用它們定位。需要分清具體紀錄時,查看局部 DOM。需要判斷圖表高亮、按鈕遮擋或畫布內的控制項時,再取一張當前截圖。

一位開發者在 Playwright 社區原帖 里描述過,Agent 遇到一串同名的 Add to Cart 按鈕,直接取了第九個。它缺的是按鈕與商品之間的對應關係。按商品標題限定卡片,或者查穩定的商品 ID,都比記按鈕的順序更貼合任務。

下文用 Tabbit Browser 說明如何在一個瀏覽器分頁里切換這幾種輸入。

核心結論

  • 角色和無障礙名稱描述控制項的用途。遇到同名控制項,按目標紀錄、表單或彈窗限定範圍。

  • DOM 提供元素屬性和紀錄關係。查到節點後,還要判斷可見性、可用狀態和滑鼠命中位置。

  • 截圖保存某一時刻的外觀。視覺讀懂圖片後,可以把動作交回語義定位器。

  • 頁面或目標位置變化時重新觀察。點擊之後單獨核對結果。

三種輸入各自提供什麼

輸入能提供常見缺口適合先做什麼
局部 DOM運行中的節點、文本、屬性可能包含隱藏或舊節點按已知紀錄 ID 查找一行
無障礙快照角色、名稱及部分狀態可能省略業務 ID 和像素位置找到具名輸入框或按鈕
截圖加視覺當時的佈局、色彩、位置關係坐標隨視口和佈局變化看遮擋層或畫布中的圖形

DOM 是瀏覽器運行中的文檔,網頁腳本執行後,元素結構可能和初始 HTML 響應不同。無障礙快照可保留標題層級、角色和選中狀態,但可能略掉 CSS 類名或資料屬性。截圖保留瀏覽器實際繪制的內容,包括沒有獨立節點的像素。 Playwright 快照 · 定位器文檔

讀取輸入和發送動作是兩回事。一套瀏覽器工具可以同時提供語義定位和滑鼠輸入。需要處理瀏覽器外的視窗時,再按工具覆蓋的範圍判斷是否需要 Computer Use。

用語義確定動作,用局部 DOM 確定紀錄

兩張發票卡片都有「保存」。先用發票號、標題或應用程式約定的穩定屬性定位卡片,再在卡片中查找唯一按鈕。僅用按鈕順序,一旦列表排序變化,就可能改到另一張發票。

有些組件的語義確實不夠完整。一位 Playwright 用戶 遇到缺少有效角色的自定義下拉,考慮改用測試 ID。自有應用程式可以補可訪問名稱、鍵盤行為和穩定測試 ID。第三方頁面上可以先看控制項所在容器和打開後的菜單,避免把任何下拉都假定成 combobox。

即使已找到目標,載入狀態或遮罩也可能擋住點擊。Playwright 普通點擊會檢查可見、穩定、能接收事件、已啓用等條件。出現攔截時先檢查實際命中對象,再決定如何處理。按鈕點不動的排查方法 · Playwright 動作條件

需要畫面資訊時再讀截圖

Canvas 圖表可能只對應一個 DOM 節點,但藍色資料點和紅色資料點在圖中分得很清楚。先檢查應用程式是否另外提供可訪問圖例、鍵盤操作或資料匯出。只有目標確實只存在於像素中時,才需要通過截圖識別。HTML Canvas 支持備用內容,實際能否用要看應用程式實現。MDN Canvas 文檔

能從圖上認出已展開菜單時,可以返回角色定位,選擇該菜單里的具名項目。若是畫布內無獨立元素的控制項,再使用位置或手勢。Playwright 滑鼠使用視口的 CSS 像素。截圖被裁剪或縮放時,要換算原點與比例,保持與當前視口一致。Playwright 滑鼠介面

頁面載入、工具提示或虛擬列表都可能改變下一次動作的目標。即使定位器重新解析了,「第一行」也可能換成另一條紀錄。操作前重新核對身份,操作後讀狀態。

在 Tabbit 中處理同一分頁的表單和畫布

假設任務是在網頁里保存貨號,再切換圖表編輯器的顏色。先檢查 Item code 與 Save item 的角色和名稱,保存後查對應貨號的狀態。選擇畫布顏色時,再觀察當前截圖並核對顏色回顯。

示意網頁上方是帶標籤的表單,下方是 Canvas 繪制的藍色和紅色控制項
上方的 Save item 是 HTML 按鈕。下方藍色和紅色控制項由 Canvas 繪制。圖為示意頁面。

表單狀態與畫布狀態分別對應兩項結果。交付給人的結果回條也應分開寫,避免只說「成功」。

Tabbit CLI 官方快速開始 說明瞭如何訪問分頁,CLI 指南 涵蓋任務和結果回條。使用 MCP 可以參考 Playwright MCP 項目 與 接入步驟。這些介面回答 Agent 怎樣連上網頁,頁面結構和任務目標決定該讀哪種輸入。瀏覽器控制方式

按當前問題決定下一步

情況下一步核對什麼
多條紀錄上的按鈕同名按標題或穩定 ID 限定容器目標紀錄內只有一個相符項目
快照里缺少畫面上可見的控制項查局部 DOM,必要時補截圖找到可靠語義目標或當前畫面中的唯一控制項
截圖後佈局改變重新觀察再使用位置當前視口內的目標對應正確對象
點擊返回成功但紀錄沒變先查狀態再決定是否重試已確認結果、明確失敗或暫停人工核對

用 精簡觀察的方法 控制輸入範圍。週期性任務可以把重試與人工復核計入 單次成功成本。如果任務本來只是讀取或匯出紀錄,也可以看看應用程式是否提供 API 或 MCP 介面。

第一次跑流程時,把紀錄標識和成功信號寫入 Agent 提示詞,按 首個任務清單 約定沒有結果回條時何時停下。能按語義定位就先定位,缺紀錄身份查局部 DOM,缺畫面資訊再看截圖。在同一分頁里要完成這些動作時,可以使用 Tabbit。

常見問題

無障礙快照等於 DOM 嗎?

兩者保留的資訊不同。DOM 提供元素及屬性,快照則按工具的方式呈現計算後的角色、名稱和狀態,可能省略佈局、類名和業務標識。

基於 DOM 的 Agent 能操作 Canvas 嗎?

它能找到 Canvas 元素,也能使用應用程式另外提供的語義控制項。如果目標只畫在像素里,需要讀取截圖或使用應用程式提供的介面。

什麼時候需要重截網頁?

下一步依賴位置時,滾動、縮放、調整視窗、打開彈窗或頁面重排後應重新截圖。如果結果也是視覺狀態,操作後再看一次。

瀏覽器視覺一定靠坐標點擊嗎?

視覺負責讀圖。混合工具可以先通過截圖認出目標,再通過語義定位或鍵盤執行;目標缺少可靠元素身份時才考慮坐標。

點擊保存後應該檢查什麼?

核對目標紀錄的保存狀態、已儲存的值或可靠結果回條。結果不明確時先讀取紀錄,避免重復提交。

面對新網站先試哪種方法?

有標籤的控制項先用角色和名稱。遇到重復紀錄時按 DOM 屬性或容器縮小範圍,遇到外觀或位置問題時補截圖。

下一步

讓 Tabbit 與你並肩工作。

跨分頁調研、自動化重複的瀏覽器工作,讓每一處上下文都觸手可及。