更新匯入以使用 BiDi Java

這篇部落格文章討論 Java BiDi 實作中斷性變更背後的理由,以及使用者必須做的變更。

程式碼庫的哪個部分受到影響?

Java 綁定中的 Selenium WebDriver BiDi API 受到影響。

中斷性變更影響了什麼?

WebDriver BiDi API 維持不變,因此您可以繼續使用它們。但是,匯入語句需要更新。

什麼是中斷性變更?

使用 BiDi API 時,需要更新匯入語句。

在 Selenium 4.19 之前

import org.openqa.selenium.bidi.LogInspector;
import org.openqa.selenium.bidi.BrowsingContextInspector;
import org.openqa.selenium.bidi.Input;
import org.openqa.selenium.bidi.Script;
import org.openqa.selenium.bidi.Network;

在 Selenium 4.19 及更高版本之後

import org.openqa.selenium.bidi.module.LogInspector;
import org.openqa.selenium.bidi.module.BrowsingContextInspector;
import org.openqa.selenium.bidi.module.Input;
import org.openqa.selenium.bidi.module.Script;
import org.openqa.selenium.bidi.module.Network;

為什麼要進行中斷性變更?

Selenium 正在積極努力實作 W3C BiDi。W3C BiDi 的長期目標是將所有 W3C WebDriver Classic API 移植為在底層使用 WebDriver BiDi API。當引入 browsingContext.locateNodes 命令(這是 findElements 命令的 BiDi 對應項)時,主要目標是確保 'locateNodes' 命令傳回 WebElement。這將使未來的移植更加順暢,並允許使用者繼續呼叫 WebElement 的 API。

在實作過程中,在底層建置工具 Bazel 中遇到了循環依賴性。解決方案是遵循 Bazel 的最佳實務

因此,模組的 W3C BiDi 相關類別被分組到 Bazel 套件中。本身呼叫命令或事件的類別都分組在名為 'module' 的套件下。因此,遵循建議的實務並避免 Bazel 的循環依賴性證明是一個雙贏的解決方案。

摘要

W3C BiDi 協定正在開發中,瀏覽器和客戶端也在並行努力添加互補的 API。在 Selenium 致力於實作它的同時,協定也在不斷變化,新增或更新新的模組或 API。雖然團隊力求避免中斷性變更,並在移除 API 之前至少棄用 2 個版本,但對於某些變更(例如本部落格文章中描述的變更),可能難以遵守這一點。