Chrome DevTools

許多瀏覽器提供「DevTools」,這是一組與瀏覽器整合的工具,開發人員可以用來除錯網路應用程式和探索其網頁效能。Google Chrome 的 DevTools 使用稱為 Chrome DevTools Protocol(簡稱「CDP」)的通訊協定。顧名思義,這並非設計用於測試,也不是為了擁有穩定的 API,因此功能性高度仰賴瀏覽器版本。

WebDriver BiDirectional Protocol 是 W3C WebDriver 通訊協定的下一代,目標是提供所有瀏覽器都實作的穩定 API,但尚未完成。在完成之前,Selenium 提供存取 CDP 的管道,供實作它的瀏覽器(例如 Google Chrome、Microsoft Edge 和 Firefox)使用,讓您可以用有趣的方式來強化測試。以下提供一些使用範例。

使用 Selenium 搭配 Chrome DevTools 的方法

有三個不同的方式可以在 Selenium 中存取 Chrome DevTools。如果您在網路上尋找其他範例,可能會看到這些方式的組合。

  • CDP 端點 是使用者最初提供的選項。它只適用於最簡單的事情(設定狀態、取得基本資訊),而且您必須知道網域、方法和關鍵值配對的「神奇字串」。對於基本需求,這可能比其他選項更簡單。這些方法僅暫時支援。
  • CDP API 改善了僅使用端點的方式,因為您可以設定非同步執行。您可以存取受支援的類別、方法和參數,而不是字串和映射。這些方法也僅暫時支援。
  • 應盡可能使用 BiDi API 選項,因為它完全抽象化實作細節,而且當 Selenium 離開 CDP 時,它將與 CDP 或 WebDriver-BiDi 搭配使用。

價值有限的範例

有許多常見的 CDP 使用範例,但其實用價值有限。

  • 地理位置 — 幾乎所有網站都使用 IP 位址來判斷實際位置,因此設定模擬地理位置很少能達到預期的效果。
  • 覆寫裝置指標 — Chrome 提供一個很棒的 API,可在選項類別中設定 行動模擬,這通常優於嘗試使用 CDP 執行此操作。

查看這些文件中的範例,以了解如何執行其他有用的操作


Chrome DevTools 通訊協定端點

Google 提供一個 /cdp/execute 端點,可直接存取。每個 Selenium 繫結都提供一個方法,讓您可以將 CDP 網域傳遞為字串,並將必要參數傳遞為簡單的 Map。

Chrome DevTools 通訊協定 API

每個 Selenium 繫結都會動態產生各種 CDP 網域和功能的類別和方法;這些繫結與特定版本的 Chrome 相關聯。

使用 BiDi API 的 Chrome Devtools 通訊協定

這些範例目前使用 CDP 實作,但當功能使用 WebDriver-BiDi 重新實作時,相同的程式碼應可正常運作。

最後修改日期:2023 年 10 月 18 日:改造 Bidi 文件 (#1489) (70802b62157)