WebDriver BiDi 可在 Firefox、Chrome 和 Puppeteer 使用

Matthias Rohmer
Matthias Rohmer

上週,我們與 BrowserStack 共同宣布 WebDriver BiDi 可在 BrowserStack 中直接使用。 本週 WebDriver BiDi 今年夏天將與 Firefox 129 和 Puppeteer 23 各自支援 WebDriver BiDi!

過去 4 年來,Mozilla 一直是 WebDriver BiDi 的強大合作者 初期協助制定新標準,然後逐步導入 電子報,並透過 Firefox WebDriver 電子報妥善記錄學習進度。

透過 WebDriver BiDi, 可在 Firefox、Puppeteer (23 版) 直接推出正式版, 透過 WebDriver BiDi,為 Firefox 提供穩定支援。方便您將作業 Firefox 提供與 Chrome 相同的精簡 API。Puppeteer 對 Chrome 的支援 開發人員工具通訊協定 (CDP) 保持不變。

Firefox、CDP 和 Puppeteer

Puppeteer 是可靠的工具,可讓開發人員透過 Chrome 實現以 Chromium 為基礎的瀏覽器自動化 開發人員工具通訊協定,也稱為 CDP。2019 年,Puppeteer 開始實驗支援實驗 適用於 Firefox。

為此,Mozilla 在 Firefox。這項解決方案可讓 Firefox 搭配 Puppeteer API 自動執行,不過 的注意事項:

  • 顧名思義,CDP 適用於 Chrome 的開發人員工具,因此必須變更 以及開發人員工具
  • CDP 並未標準化,但在分享的公開規格中,也沒有以 Firefox 要求穩定通訊的方式維護。
  • 由於 Firefox 只導入一部分 CDP,Puppeteer 永遠無法 保證其完整的 API 可以在 Firefox 中正常運作,讓使用者感到困惑。

我們非常樂意與 Mozilla 共同維持這項支援服務, 但過去幾年來,我們一直很清楚這個解決方案不是一勞永逸的解決方案。以此為基礎 合作,以及其他主要瀏覽器和工具供應商, 我們共同打造了 WebDriver BiDi

團結力量大

Firefox 團隊一直熱切地努力在 Firefox 中實作 WebDriver BiDi。 同時,Puppeteer 團隊也開始擴大支援 WebDriver BiDi 支援 與 Puppeteer API 的對應指標雙方團隊的目標是 確保實際工作環境自動化用途所需的各個 API 可透過 WebDriver BiDier 的 Puppeteer 存取,確保 Chrome 和 Firefox。

共用的團隊資訊主頁,顯示過去幾個月通過的測試數量。
共用的團隊資訊主頁,顯示過去幾個月通過的測試數量。

讓 Puppeteer 使用者選擇用 Firefox 或 Chrome 執行自動化動作 方法是在啟動 Puppeteer 時指定 browser 設定鍵 執行個體。

import puppeteer from 'puppeteer';

const firefoxBrowser = await puppeteer.launch({
  browser: 'firefox', // WebDriver BiDi is used by default in Firefox.
});
const page = await firefoxBrowser.newPage();
...
await firefoxBrowser.close();

const chromeBrowser = await puppeteer.launch({
  browser: 'chrome',  
  protocol: 'webDriverBiDi', // CDP would be used by default for Chrome.
});
const page = await chromeBrowser.newPage();
...
await chromeBrowser.close();

進一步瞭解 Firefox 129 的新功能以及 Mozilla WebDriver 開發成果 BiDi 請參閱相關的 Mozilla Hacks 網誌文章

日後對 CDP 的支援

上述程式碼片段顯示 如要讓 Chrome 自動使用 使用 WebDriver BiDi with Puppeteer 時,您必須明確將 protocol 設為 webDriverBiDi。因為在 Chrome 中,Puppeteer 將預設為 CDP – 不破壞現有的自動化動作,同時繼續支援自動化動作 這在 Chrome 中

Firefox 已從 Firefox 129 淘汰 CDP 支援, 預計於 2024 年底移除。 如果您現有的自動化動作需要仰賴 Firefox 的 CDP 支援功能,我們極力建議您 建議您改用 WebDriver BiDi如果這個方法不可行,請與 dev-webdriver@mozilla.org