關於 Selenium Webdriver 你所不知道的一切
已發表: 2022-11-02自動化測試人員使用 Selenium Webdriver 通過接受命令並將它們發送到 Web 瀏覽器來測試系統中的機率。
在現代世界中,正在部署數百個移動和 Web 應用程序。 QA 團隊必須始終確保 Web 應用程序在開發區之外正常運行。 早些時候,這些任務是手動執行的。
輸入硒。 它改變了執行測試的方式。
現在,自動化已經在各個行業廣為人知,因為它節省了時間和成本,並為企業提供了很多優勢。
Selenium 是對 Web 應用程序開發領域的各種組織有用的最佳自動化測試工具之一。 它確實是一個有用且強大的工具,提供了很多好東西。
想要對應用程序功能充滿信心而又不想花費大量時間測試 Web 應用程序前端的開發人員可以將 Selenium 用於他們的目的。 此外,Selenium 通過自動化您的重複性任務來節省您的時間。
在本文中,我將討論 Selenium、Selenium Webdriver、它的組件、支持的語言、一些關鍵特性和實際用例。
讓我們開始!
什麼是硒?
Selenium 是 Web 應用程序的自動化工具。 它是一個開源可移植框架,各種組織和開發人員使用它來自動化他們的關鍵任務。 在測試回歸和功能測試用例時,Selenium 非常靈活。

Selenium 支持跨各種平台、編程語言和瀏覽器的自動化。 它的測試腳本是用 Python、C#、Java 等各種編程語言編寫的。 這些腳本在不同的瀏覽器上運行,如 Safari、Firefox、Chrome、Opera 等,支持 macOS、Linux、Windows、Solaris 等平台。
Selenium 支持跨瀏覽功能,並有助於創建基於瀏覽器的強大的回歸自動化套件。
它最初是由 Jason Huggins 在 2004 年開發的,當時他是一名需要定期測試的 Web 應用程序的工程師。 於是,他通過 JavaScript 創建了一個程序,意識到了手動測試的缺點。
起初,他將程序命名為“JavaScriptTestRunner”。 在意識到該程序的潛力後,Jason Huggins 將其變成了一個開源平台,並將其更名為 Selenium Core。
硒如何有用?
開發人員和組織在測試 Web 應用程序時使用 Selenium,因為 Selenium 使開發人員能夠執行自動化測試。

事實上,一個軟件具有復雜的架構,也容易出現回歸問題。 從添加新功能到修復缺陷,與此相關的每個功能都可能導致現有功能停止工作。 這是自動化測試是編程世界中最有用的步驟的主要原因。
由於在對功能進行微小更改後手動測試應用程序是不切實際的,因此 Selenium 為您提供了一個更好的解決方案來減少此類繁重的任務。 它允許組織和開發人員模擬跨各種瀏覽器與 Web 應用程序的每次交互的測試。
硒工具套件

Selenium 包含大量工具或組件。 讓我們逐一討論。
#1。 硒 IDE
您可以使用名為 Selenium IDE 的記錄和回放自動化組件來自動化您的 Web 應用程序的測試。 它以 Firefox 和 Chrome 瀏覽器擴展的形式出現。 編程經驗低且有限的人可以使用此工具,因為它適用於錄製和播放原理。
#2。 硒 RC

Selenium RC 用於在任何瀏覽器中插入 JavaScript 代碼以實現自動化。 它還需要額外的服務器來運行這些自動化腳本。 但是它有一些限制,比如速度慢,沒有像 HtmlUnitDriver 這樣的無頭瀏覽器,並且需要在執行任何測試腳本之前啟動服務器。
#3。 Selenium 網絡驅動程序
Selenium Webdriver 是 Selenium 最重要的組件之一。 它為多種瀏覽器提供各種驅動程序並支持不同的編程語言。
此外,它是面向對象的,支持幾乎所有的瀏覽器,如 Firefox、Chrome、IE、Safari 等。 可以使用流行的語言編寫腳本,包括 Python、Ruby、Java 等。
#4。 硒網格
Selenium 網格再次成為 Selenium 的重要組成部分。 它有助於在不同的遠程機器上並行分佈自動化測試的運行。 網格由一個集線器和各種節點組成。
這些節點運行 Selenium 套件的實例,您可以在這些實例上執行測試用例。 中央集線器充當服務器,節點連接到它以控制整個測試執行。
Selenium WebDriver 詳解

一般來說,WebDriver 是一組應用程序編程接口 (API),是一種面向對象的工具,具有很多功能。 它提供瀏覽器和語言之間的通信設施。
WebDriver 用於在多個流行的瀏覽器中執行各種測試。 此外,它包含不同類型的抽象方法,如findElement()
、 By()
、 get()
等。
2009 年,Selenium RC 與 WebDriver 合併,創建了一個新的 Selenium 工具,稱為 Selenium WebDriver 或 Selenium 2.0。
現在, Selenium Webdriver是 Selenium 的一個流行工具。 它為開發人員提供開源和免費庫,以自動化 Web 應用程序的測試。
在 Selenium WebDriver 中,測試腳本是使用各種支持的編程語言開發的。 它可以在最現代的網絡瀏覽器中運行。 此外,它支持不同的語言,如 Perl、Python、Ruby、Java、PHP 和 C#。

但目前,Selenium WebDriver 最流行的是 C# 和 Java。 它比 Selenium RC 執行得快得多,因為它直接調用瀏覽器。 此外,WebDriver 包含 Firefox 驅動程序或 Gecko 驅動程序的內置實現。
要在其他瀏覽器中執行測試,您需要插入特定於瀏覽器的驅動程序,以便進行通信和運行自動化測試。 最常用的 WebDriver 是:
- 谷歌瀏覽器驅動
- 歌劇司機
- Internet Explorer 驅動程序
- HTML 單元驅動程序 – 無頭驅動程序
- Safari 驅動程序
Selenium WebDriver 因其在 Web 自動化方面的穩定性和多樣性而聞名。 超過 80% 的公司正在使用 Selenium WebDriver,因為它是 UI 自動化的最簡單方法。
Selenium WebDriver 的組件

Selenium WebDriver 由四個基本組件組成:
- Selenium 語言綁定
- JSON 有線協議
- 瀏覽器驅動程序
- 真正的瀏覽器
讓我們詳細討論一下 Selenium WebDriver 的核心組件。
#1。 Selenium 語言綁定/核心庫/Selenium 客戶端
自動化腳本通過 Webdriver 與 Selenium 服務器交互。 它是用不同的編程語言編寫的,例如 Ruby、Python、Java 等。
Selenium 開發人員開發語言綁定,讓 Selenium 支持這些編程語言。 它的客戶端庫只是不同的 Jar 文件。 這些庫具有 Selenium WebDriver 的方法和類,它們是創建自動化測試腳本所必需的。

您可以使用適用於各種語言的軟件包安裝程序來安裝 Selenium 核心庫。 例如,如果您希望在 Java 中使用瀏覽器驅動程序,您將需要 Java 客戶端庫或 Jar 文件。
Selenium 客戶端庫不是測試框架,而是提供了一個 API,這意味著一組從程序執行 Selenium 命令的函數。
#2。 基於 HTTP 的 JSON 有線協議
JavaScript Object Notation (JSON) 是一種流行的數據交換格式,它基於 JavaScript 的子集。 JSON 用於在 Web 上的服務器和客戶端之間交換數據。
JSON Wire Protocol 支持所有流行語言中可用的所有數據格式,例如 Python、Ruby、Java 等。它是一種使用 JSON 在 Web 上的客戶端和服務器之間傳輸數據的傳輸機制。
此外,JSON 使用 REST API 在 HTTP 服務器之間傳輸數據,每個瀏覽器驅動程序都有自己的 HTTP 服務器。
#3。 瀏覽器驅動程序

Selenium 為每個瀏覽器使用特定的驅動程序來建立安全通信,而不會洩露瀏覽器功能的任何內部邏輯。 這些驅動程序接收來自 Selenium 語言綁定的請求,並在瀏覽器上調用所需的操作。
Selenium 支持幾乎所有現代瀏覽器的自動化。 瀏覽器驅動程序擴展了另一個名為 RemoteWebDriver 的類,該類實現了 WebDriver 接口。
#4。 真實無頭瀏覽器
瀏覽器基本上是人們用來查看或搜索網絡內容的軟件程序。 Selenium WebDriver 支持真實和無頭瀏覽器。
示例:假設您希望使用 Selenium WebDriver 自動化測試並在任何真實瀏覽器(如 Chrome)中執行腳本。 為此,您需要下載特定的驅動程序應用程序。 HTMLUnit 瀏覽器 (HTMLUnitDriver) 是無頭瀏覽器的一個示例。
Selenium WebDriver 是如何工作的?
在實時場景中,當使用受支持的 Selenium 客戶端庫中的任何人編寫腳本代碼時,通過單擊正確的選項,您可以執行程序的源代碼。 單擊運行選項後,瀏覽器將啟動並導航到網站的 URL。

當您使用 WebDriver 執行測試腳本時,會在內部執行一些步驟。
- 單擊按鈕運行時,客戶端庫會運行程序中的命令並將其轉換為 JSON 格式。 您將通過 HTTP 上的 JSON Wire Protocol 找到序列化的 JSON 格式,以將每個命令發送到瀏覽器驅動程序。 然後,每個瀏覽器驅動程序都使用 HTTP 服務器來接收 HTTP 請求。
- JSON Wire Protocol 通過傳輸數據在服務器和客戶端之間進行通信。 HTTP 服務器在真實瀏覽器上執行所有必要的操作。 瀏覽器將發送加載 URL 的請求。
- 執行完所有動作後,需要通過 HTTP 將執行狀態發送回 HTTP 服務器。 瀏覽器驅動程序再次使用 HTTP 服務器接收請求並通過 JSON Wire Protocol 將其發送回庫。 然後將客戶端庫傳遞回程序。 然後程序將報告失敗或成功。
Selenium WebDriver 的特點

Selenium WebDriver 的強大功能是:
- 多瀏覽器支持: Selenium WebDriver 支持廣泛的網絡瀏覽器及其版本,例如 Chrome、Firefox、Safari、Opera、Internet Explorer 等。它還支持 HTMLUnit 瀏覽器等無頭瀏覽器。
- 多種語言支持: Selenium WebDriver 支持最常用的編程語言,如 Ruby、PHP、JavaScript、Pearl、Python、C# 等。它將提供根據能力選擇任何一種語言的便利。 您可以輕鬆地開始創建測試腳本。
- 速度: Selenium WebDriver 執行快速操作。 它不需要中間服務器與瀏覽器進行通信。 此外,它還提供 Web 瀏覽器和 WebDriver 客戶端庫之間的直接通信。
- 簡單易行的命令: WebDriver 提供了簡單易行的命令以在測試腳本中實現。 例如,如果您希望使用 WebDriver 啟動瀏覽器,則需要使用 new FirefoxDriver()、new ChromeFrover() 等命令。
- 驅動程序、方法和類: WebDriver 提供了各種解決方案來處理自動化測試中的潛在變化。 此外,它使用動態查找器幫助測試人員處理複雜的 Web 元素,例如下拉菜單、警報、複選框等。
- 簡單的 API 命令:WebDriver 是面向對象且緊湊的,因此可以使用封裝和抽象來隱藏不尋常的細節。 這使得 Selenium WebDriver 變得簡單。
- 易於安裝和配置: Selenium WebDriver 提供了一個選項來測試使用 JavaScript 或 AJAX 構建的異步 Web 應用程序。
Selenium WebDriver 的優點

Selenium WebDriver 的一些優點包括:
- Selenium WebDriver 是一個健壯的、免費的、開源的和可移植的工具。
- 它支持各種操作系統,如 Windows、Linux 和 Mac。 它還支持第三方工具,包括 Apache POI、Autoit 等。
- 它支持並行測試執行過程,這也是 Selenium WebDriver 流行的原因之一。 這將減少執行測試用例的時間。
- 它支持監聽器和動態查找器的實現。
- 在 Selenium WebDriver 中,不需要在每次執行腳本之前啟動服務器。
- 您可以將其與任何第三方工具(例如 JUnit 和 TestNG)集成,以對不同的測試用例進行分組並生成測試報告。
- 通過與 Jenkins、Docker 和 Maven 集成來獲得持續測試。
Selenium WebDriver 的限制
除了優點之外,Selenium WebDriver 也有一些限制。
- Selenium WebDriver 只能測試基於 Web 的應用程序。 無法使用 Selenium 測試桌面應用程序和基於窗口的應用程序。
- 不可能對圖像進行測試。
- WebDriver 不會自動生成測試結果文件。 您需要將其與 JUnit 或 TestNG 等框架集成或生成報告。
- 它不支持新的瀏覽器。
- 沒有加載項幫助。
- 條碼閱讀器、reCAPTCHA 和 CAPTCHA 無法通過使用 WebDriver 實現自動化。
Selenium WebDriver 的用例

Selenium WebDriver 在處理 Web 應用程序的不同行業中有許多用途。 一些用途如下:
- 更新 WebDrivers 版本以匹配 Web 瀏覽器的最新版本和 Selenium 庫
- 許多企業通過實施自動化框架來解決同步問題
- 將測試數據存儲到 JSON 中
- 使用頁面對像模型設計模式對被測 Web 應用程序的用戶界面進行建模
- 使用面向對象編程 (OOP) 語言測試自動化開發
- 通過自動截屏來調查故障
- 從測試自動化中消除不確定性
- 創建高質量的測試結果
結論
Selenium WebDriver 是 Selenium 套件的關鍵組件。 它就像 Selenium 的大腦。 Selenium WebDriver 中的 API 有助於測試過程的快速運行。 Selenium WebDriver 的主要功能是跨瀏覽器測試、網頁自動化、現代技術支持等等。
Selenium WebDriver 中的瀏覽器驅動程序有助於通過各種 Web 瀏覽器與套件進行交互。 因此,Selenium WebDriver 對於整個 Selenium 自動化測試框架非常重要。