Selenium 與 ... 部落格文章

這篇部落格文章討論了網路上比較 Selenium、Cypress 和 Playwright 的聳動文章。這些文章都沒有意義或幫助。

關於自動化測試的部落格文章最簡單的聳動方式,就是將 Selenium 與該領域的另一種工具進行比較,並使用引人注目的標題,尤其是在貶低現有工具時。

不幸的是,這可能會混淆各種產品中可用的功能,尤其是在我們將蘋果與蘋果進行比較時。

Selenium 一直是瀏覽器自動化的絕佳工具。幸運的是,對於這個專案而言,它已成為近 20 年來測試 Web 應用程式的首選工具。這個專案一直專注於建構瀏覽器自動化的困難部分,這些部分變得越來越困難。穩定的 API 和執行 Selenium 的基礎架構的可擴展性一直是該專案的優先事項。它沒有專注於人們如何使用它進行測試,因為市面上已經有非常好的測試框架,而且必須為 5 種不同的語言做到這一點是一項非常龐大的工程工作。

然而,某些特定的誤解經常在這些部落格文章中再次出現。

與 Playwright 和 Cypress 相比,設定瀏覽器和驅動程式太難了

過去確實如此,因為您必須下載驅動程式。對於 GeckoDriver 和 SafariDriver 來說,這還不算太糟,因為它們可以優雅地處理瀏覽器升級。另一方面,您需要為每個新版本更新基於 Chromium 的瀏覽器的驅動程式。

一年多以來,Selenium 會自動處理這個問題。如果它找不到 ChromeDriver 或 EdgeDriver,它將使用 Selenium Manager 下載它。自首次發布以來,它已經改進了很多,現在它可能是同類產品中最好的,因為最新版本的 Selenium 甚至可以在可能的情況下下載瀏覽器並使用它。與 Playwright 和 Cypress 相比,您不需要更新您對 Selenium 的依賴性來更新瀏覽器和驅動程式,您仍然使用與客戶相同的瀏覽器,並且切換版本變得輕而易舉:您也不必更改您正在使用的測試框架。而且,別忘了它使用的是 Google 建議您用於測試 的瀏覽器。

設定測試執行器很困難,而 Playwright 和 Cypress 內建了它…

嗯… 也許?使用 Selenium 設定 E2E 測試框架並不像某些人可能認為的那麼困難。真正的難點是確保驅動程式位於正確的位置,而我們已經解決了上述問題。完成後,Selenium 的方法允許您使用您最舒適的任何測試執行器。如果您想要一種「包含所有功能」的方法,將 Selenium 與測試執行器緊密整合,那麼許多使用 Selenium 的專案之一,例如 SeleniumBase、Nightwatch、Serenity 等,可能是適合您的工具。

需要注意的一件事是,Playwright 是唯一像 Selenium 一樣的多語言瀏覽器自動化框架。但是,如果您不使用 TypeScript 或 JavaScript,您仍然需要自行設定測試執行器。某些測試框架具有外掛程式,可以自動設定您可能需要的夾具。在 JavaScript/TypeScript 領域,如果您真的需要內建的測試執行器,那麼有一些下游專案,例如 NightwatchJS,以及相關專案,例如 WebdriverIO。下游專案使用我們的函式庫,而相關專案則有自己的函式庫,但仍然遵循 WebDriver 標準。

Playwright 和 Cypress 可以進行網路攔截,並允許我編寫事件驅動程式碼,這與 Selenium 不同

自 Selenium 4 推出以來,Selenium 一直能夠提供此功能。它非常好,甚至 Playwright 也建議您使用它來擴展您的測試。Selenium 專案不會很快移除此功能,因為我們依賴 WebDriver BiDi 規範的實作來取代這些功能。即使如此,Selenium 也有盡力確保升級不會在沒有充分警告的情況下破壞任何東西的歷史。這就是為什麼每種語言都提供高階封裝器(例如 NetworkInterceptor),將您的測試與正在使用的底層技術隔離。

總結

正如我們從上面看到的,Selenium 仍然與市面上的產品一樣好。Selenium 與 Cypress 或 Playwright 的一個不同之處在於,我們是一個由志工驅動的專案,而不是商業支持的。想幫助我們嗎?為什麼不寫一篇部落格文章,介紹您如何使用上述功能,或在社群媒體上發布這些功能如何讓您的生活更輕鬆?

上次修改時間:2024 年 1 月 10 日:[部落格] Selenium vs ... 部落格文章 (#1557) (37d8823d873)