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

Maksim Sadym
Maksim Sadym

前一篇文章中,我們探討了現有的自動化通訊協定,也就是 WebDriver 的「傳統版」和 Chrome 開發人員工具通訊協定 (CDP),以及兩者各自的優勢和限制。

體驗未來的瀏覽器自動化技術 WebDriver BiDi!這是新的標準瀏覽器自動化通訊協定,目前正在開發中,目標是結合 WebDriver (傳統) 和 CDP 的優點。WebDriver BiDi 承諾提供雙向通訊,因此預設會快速執行快速,並提供低階控管功能。

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

WebDriver BiDi 的願景在於讓您使用慣用的工具撰寫測試,並在任何瀏覽器或驅動程式中自動執行,讓您擁有充分的靈活性。

WebDriver BiDi 的願景。
WebDriver BiDi 的願景

標準化

WebDriver BiDi Working Group 構成各種瀏覽器廠商、開放原始碼瀏覽器自動化專案,以及提供瀏覽器自動化解決方案的公司,這次合作可確保瀏覽器自動化的未來發展,

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

這些作業大多是在這個 GitHub 存放區中完成。每個月都會舉行會議,邀請各大瀏覽器供應商分享實際進度,並討論可訂定及未知的具體細節。跨公司工作團隊可確保相關決策適用於所有利害關係人。

建立及實作新的通訊協定並不容易。更需要各家供應商的合作及合作。這項程序包括:

  • 規格:建立註解 (RFC) 程序,以收集提案相關意見回饋。
  • 驗證:一系列可在跨平台執行的測試,做為所有實作項目的可靠資料來源。
  • 實作:瀏覽器會根據規格導入通訊協定,並通過驗證測試。

挑戰

本節將探討實作 WebDriver BiDi 時遇到的挑戰,希望如何在相容性、可用性和可執行性之間取得平衡。

超越 CDP 本機副本:善用跨瀏覽器相容性

無法在 WebDriver BiDi 規格中直接複製 CDP 及其 Chrome 和開發人員工具專屬元素。其他瀏覽器無法依原樣導入 CDP,因此只能記錄如何實現無微妙的規格。

確保低延遲

WebDriver BiDi 設計的目的是在不犧牲效能的情況下,處理高延遲問題。在 CDP 中,由於用戶端和伺服器幾乎總是在同一部實體機器中運作,因此延遲時間較短。因此,WebDriver BiDi 必須減少用戶端和伺服器之間的往返次數。

在 BiDi 中優先考慮人體工學

雖然開發人員不應從頭開始建立 WebDriver BiDi 用戶端,但請務必避免讓通訊協定過於複雜。過於複雜的 BiDi 不僅難以實作,也難以處理,導致採用與使用上受到阻礙。

確保 BiDi 的可實作性

WebDriver BiDi 必須能夠實際執行,考量各瀏覽器的限制。舉例來說,保留 BiDi 向用戶端公開的所有 JavaScript 物件,可能會導致記憶體流失;而未保留任何物件,都會妨礙偵錯,以及與網頁的 JavaScript 互動。若想在不影響效能的情況下實現高效率的瀏覽器自動化功能,就必須在各方面取得平衡。

克服挑戰

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

快速設計出原型

解決導入能力的挑戰是 BiDi 成功的關鍵。為加快規格和測試作業的進度,我們採用 NodeJS 快速設計原型。這不僅可讓我們實驗不同的解決方案,也有助於推動網路平台測試的開發。

在設計時將效能納入考量

這項設計決策是基於效能的考量,因為某些情況下,WebDriver BiDi 的延遲時間很高。舉例來說,從瀏覽器擷取物件 ID 和值時,WebDriver BiDi 只需要往返一次,而 CDP 需要兩個資訊。這是因為 WebDriver BiDi 可以在單一回應中同時傳回 ID 和值 (結果不得由 JSON 序列化),而 CDP 必須個別傳回這些 ID。

強調網路平台測試 (WPT)

網路平台測試在 BiDi 的工作中扮演重要角色。目前在涵蓋 WebDriver 的「傳統」和「WebDriver BiDi」部分,WPT 可做為所有實作的可靠參考。這些測試設計為在各種實作項目中執行與傳遞,確保跨瀏覽器通訊協定執行一致,這是 WebDriver BiDi 成功的關鍵。請查看資訊主頁中最新的 WPT 結果

計畫內容與目前的進度為何?

請參閱 WebDriver BiDi 藍圖,瞭解專案方向。發展藍圖是仍在開發階段,而且會不斷演進。

請參閱最新的網路平台測試,瞭解瀏覽器在各種瀏覽器上的實作狀態,因為這項功能做為可靠的資料來源。

密切關注專案里程碑,以便監控進度。

探索 2023 年成就,隨時掌握最新的開發成果!

支援 WebDriver BiDi:如何提供協助

你期待在未來使用 WebDriver BiDi 進行瀏覽器自動化嗎?表達支持的方式如下:

  • 成為早期測試人員和採用者,協助形塑 WebDriver BiDi 的未來。
  • 快分享這個好消息,使用 #WebDriverBiDi 主題標記在社群媒體上分享專案。
  • 請求協助。您可以提出功能要求,或是先確認慣用的工具採用 WebDriverBiDi。
  • 參與 RFC,提供對 API 的意見回饋。

常見問題

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

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

Puppeteer 目前採用 CDP,這是否代表 Puppeteer 將會淘汰?

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

Google 有公開發展藍圖嗎?

是,請參閱我們在 GitHub 上的藍圖。