WebDriver BiDi - 跨瀏覽器自動化的未來趨勢

先前的文章中,我們檢視了現有的自動化通訊協定,也就是 WebDriver「Classic」和 Chrome 開發人員工具通訊協定 (CDP),並說明各自的優點和限制。

歡迎使用 WebDriver BiDi,這是瀏覽器自動化技術的未來!這是目前正在開發中的全新標準瀏覽器自動化通訊協定,旨在結合 WebDriver「Classic」和 CDP 的優點。WebDriver BiDi 可提供雙向通訊,因此速度快,且內建低階控制功能。

WebDriver BiDi
WebDriver「傳統版」 Chrome 開發人員工具通訊協定 (CDP)
最佳跨瀏覽器支援 快速的雙向訊息傳遞
W3C 標準 提供低階控制
專為測試而設計

WebDriver BiDi 的願景是讓您可以使用任何喜愛的工具編寫測試,並在任何瀏覽器或驅動程式中自動執行,讓您享有完全的彈性。

WebDriver BiDi 的願景。
WebDriver BiDi 的願景

標準化

WebDriver BiDi 工作小組由多個瀏覽器供應商、開放原始碼瀏覽器自動化專案,以及提供瀏覽器自動化解決方案的公司組成。這項合作關係將為瀏覽器自動化技術帶來光明的未來。

WebDriver BiDi 工作小組
WebDriver BiDi 工作群組

這項工作大部分是在 這個 GitHub 存放區中完成。我們每月都會與所有主要瀏覽器供應商開會,報告實際進度,並討論可商榷和未知的具體細節。跨公司工作小組會確保決策與所有利益相關者一致。

建立及實施新協議絕非易事。這需要各供應商攜手合作,共同努力。這項程序包括:

  • 規格:意見請求 (RFC) 程序,用於收集提案的意見回饋。
  • 驗證:一系列可跨平台執行的測試,可做為所有實作項目的真實來源。
  • 實作:瀏覽器會根據規格實作通訊協定,並通過驗證測試。

挑戰

在本節中,我們將深入探討實作 WebDriver BiDi 的挑戰,因為它會在相容性、可用性和可實作性之間取得平衡。

除了複製 CDP 之外:採用跨瀏覽器相容性

CDP 包含 Chrome 和開發人員工具專屬元素,無法直接在 WebDriver BiDi 規格中複製。其他瀏覽器無法實作 CDP 原始版本,因此只提供說明如何實作的規格也毫無意義。

確保低延遲

WebDriver BiDi 必須設計成可處理高延遲,同時兼顧效能。在 CDP 中,延遲時間較短,因為用戶端和伺服器幾乎總是在相同的實體機器中執行,但在 WebDriver BiDi 中並非如此。因此,WebDriver BiDi 必須盡可能減少用戶端與伺服器之間的往返次數。

在 BiDi 中優先考量人體工學

雖然開發人員不必從頭開始建構 WebDriver BiDi 用戶端,但請務必避免過度複雜的通訊協定。BiDi 過於複雜不僅難以導入,也難以使用,會妨礙採用和使用。

確保 BiDi 可實作

WebDriver BiDi 必須考量各種瀏覽器的限制,才能實際實作。舉例來說,如果透過 BiDi 保留所有向用戶端公開的 JavaScript 物件,可能會導致記憶體耗盡,但如果不保留任何物件,則會妨礙對網頁 JavaScript 進行偵錯和互動。請務必取得平衡,讓瀏覽器自動化作業有效運作,同時不影響效能。

克服挑戰

在本節中,我們將討論採用的策略,以解決實作 WebDriver BiDi 的挑戰。

快速原型設計

解決可實作性問題,是 BiDi 成功的關鍵。為了加快規格和測試的進度,我們採用了使用 NodeJS 的快速原型設計方法。這不僅可讓我們嘗試不同的解決方案,還能協助開發 Web 平台測試。

以效能為優先考量設計

這項設計決策是為了提升效能,因為在某些情況下,WebDriver BiDi 的延遲時間很長。舉例來說,從瀏覽器擷取物件 ID 和值時,WebDriver BiDi 只需要一次來回,而 CDP 則需要兩次。這是因為 WebDriver BiDi 可以在單一回應中傳回 ID 和值 (結果不應可序列化為 JSON),而 CDP 必須分別傳回這些值。

著重於網路平台測試 (WPT)

Web Platform Tests 在 BiDi 的運作中扮演重要角色。目前涵蓋 WebDriver「Classic」和 WebDriver BiDi,WPT 可做為所有實作項目的可靠參考資料。這些測試可在各種實作項目中執行並通過測試,確保跨瀏覽器通訊協定執行一致,這對 WebDriver BiDi 的成功至關重要。歡迎前往資訊主頁查看最新的 WPT 結果

計畫和目前進度為何?

請參閱 WebDriver BiDi 藍圖,瞭解專案的方向。路線圖仍在開發中,且會持續更新。

如要瞭解各瀏覽器的實作狀態,請參閱最新的 Web Platform Tests,因為這項測試是真實資訊來源。

請密切留意專案里程碑,以便監控專案進度。

瞭解2023 年的成就,並隨時掌握最新進展!

支援 WebDriver BiDi:您可以提供哪些協助

您是否期待 WebDriver BiDi 帶來的瀏覽器自動化未來?以下是表達支持的方式:

  • 成為早期測試人員和採用者,協助塑造 WebDriver BiDi 的未來。
  • 快分享這個好消息,使用主題標記 #WebDriverBiDi 在社群媒體上分享專案。
  • 尋求支援。提交功能要求,或向您常用的工具詢問他們是否有採用 WebDriverBiDi 的計畫。
  • 參與意見請求,針對 API 提供意見回饋。

常見問題

WebDriver BiDi 會取代 Chrome 開發人員工具通訊協定 (CDP) 嗎?

否。以 Chromium 為基礎的瀏覽器會繼續使用 CDP 進行偵錯,而 WebDriver BiDi 則是新規格,可透過更符合人體工學的 API 滿足測試需求。

既然 Puppeteer 使用 CDP,是否表示 Puppeteer 將會淘汰?

否。不過,WebDriver BiDi 可讓 Puppeteer 成為跨瀏覽器自動化工具。

您是否有公開的產品發展藍圖?

是的,請前往 GitHub 查看我們的路線圖。