Selenium 3 即將到來
Selenium 3 即將到來! 當我撰寫本文時,我們認為「beta 4」將是正式 3.0 版本之前的最後一個 beta 版。 我在這裡告訴您變更了什麼,以及這將對您的測試產生什麼影響。
TL;DR
- WebDriver 使用者只會發現錯誤修復,以及 2.x 的直接替換。
- Selenium Grid 使用者也會發現錯誤修復和簡單的更新。
- WebDriver API 現在是 Selenium 專案唯一積極支援的 API。
- Selenium RC API 已移至「舊版」套件。
- 為 Selenium RC 提供支援的原始程式碼已替換為由 WebDriver 支援的程式碼,該程式碼也包含在「舊版」套件中。
- 由於時間上的巧合,Mozilla 對 Firefox 進行了變更,這表示從 Firefox 48 開始,您必須使用他們的 geckodriver 才能使用該瀏覽器,無論您使用的是 Selenium 2 還是 3。
更深入了解
當我們在 2011 年發布 Selenium 2.0 時,我們推出了新的 WebDriver API,並鼓勵所有人開始轉移到這些 API。 如果您使用的是 WebDriver API,那麼 Selenium 3.0 是一個簡單的直接升級。 我們沒有變更任何公開的 WebDriver API,而且程式碼基本上與最後一個 2.x 版本相同。 如果您使用的是 Selenium Grid,情況也相同:在大多數情況下,您只需放入新的 JAR(或將您的 maven 依賴項更新為 3.0.0),就完成了。
如果更新到 Selenium 3 是如此的無足輕重,為什麼我們將其稱為 Selenium 3.0? 為了回答這個問題,我首先需要提供一些歷史,並告訴您一些關於 Selenium 在底層如何運作的資訊。 Selenium 的第一個版本「只是」一個非常複雜的 Javascript 框架,在瀏覽器中執行並解釋您可能熟悉的基於表格的測試(如果您使用 Selenium IDE)。 我們稱之為「Selenium Core」。 這個 Javascript 框架構成了 Selenium RC 原始實作的基礎(Selenium API 最舊的集合,其中所有的方法和函數都在「Selenium」介面上,並且已經過時了一段時間)。 隨著時間的推移,現代網路測試的需求變得越來越複雜和精細,Selenium Core 現在比以前更難以滿足這些需求。
透過 Selenium 3.0,我們正在刪除原始的 Selenium Core 實作。 如果您使用舊的 RC 介面,我們提供了一個由 WebDriver 支援的替代實作。 這與自 Selenium 2 發布以來一直可用的「webdriver-backed selenium」相同。 由於底層技術已從 Selenium Core 變更為 WebDriver,您可能會發現某些地方使用 RC 的現有測試會遇到問題。 我們遷移套件的經驗是,這通常是一個系統性問題,可以用最少的工程工作量來修復(也就是說,問題通常隔離在少數幾個地方,並且可以重寫這些地方以避免問題)
我們也正在從主要下載項目中移除原始的 Selenium RC API。 如果您是 Java 使用者,並且需要使用它們來支援現有測試,那麼您需要依賴「org.seleniumhq.selenium:selenium-leg-rc:3.0.0」(或更高版本!)。 強烈建議您不要這樣做,除非您絕對需要。
如果您是使用表格格式執行從 IDE 匯出的測試的使用者,那麼現在專案提供了一個新的測試執行器供您使用,可以從專案的網站下載。 它採用與舊執行器相同的參數,並且我們已盡力確保測試的輸出也保持不變。
在 Selenium 專案發布 Selenium 3.0 的同時,Mozilla 正在以使其更穩定和安全的方式變更 Firefox 的內部結構,但也使得社群提供的 Firefox Driver 無法再運作。 因此,如果您使用 Firefox 進行測試,您將需要使用 geckodriver,這是一個可執行檔,類似於 chromedriver 和 Edge 的 Microsoft WebDriver。 即使您使用的是 Selenium 2,您也需要開始使用 geckodriver — 變更是在瀏覽器中,而不是 Selenium 中。 請注意,geckodriver 是 alpha 軟體,基於不斷發展的 W3C WebDriver 標準:每個人都在全力以赴,盡力為您提供最佳的測試體驗,但在使用 Firefox 進行測試時,無疑會有一些坎坷。
此版本標誌著 Selenium 提交者和社群的許多辛勤工作的成果。 我想感謝所有參與此過程的人,以及世界各地為使該專案如此成功而做出巨大貢獻的 Selenium 使用者。




