首頁 >web前端 >js教程 >Selenium 測試:完整的逐步教程

Selenium 測試:完整的逐步教程

Patricia Arquette
Patricia Arquette原創
2025-01-05 05:56:44370瀏覽

自動化測試已成為現代軟體交付中不可協商的一部分。如果您在這個領域運營,您可能已經感受到更快推出產品和新功能、保持高品質並滿足用戶期望的壓力。

您很幸運 - 自動化測試可以顯著提高結果準確性(高達 43%)並提高團隊敏捷性(高達 42%)。但要實現這些好處,您需要合適的工具來讓您的工作更輕鬆。

這就是 Selenium 發揮作用的地方。

它非常靈活,讓您可以跨不同的環境、瀏覽器和工作流程工作。基本上,它會適應您的測試方法。

最好的部分?我們準備了本指南,引導您了解 Selenium 測試的要點——它是什麼、如何設定以及如何編寫您的第一個自動化測試。這是有效應對現實世界 Selenium 測試中面臨的挑戰的必讀之作。

讓我們開始吧。

什麼是硒?

Selenium Testing: The Complete Step-by-Step Tutorial

Selenium 是開源軟體,包含一系列用於自動化 Web 瀏覽器的工具和函式庫。它使您能夠模擬使用者操作,例如單擊、鍵入、導航以及與 Web 元素交互,以測試您的應用程式在不同條件下的行為。

在Selenium 上,您可以跨現代Web 瀏覽器(例如​​Chrome、Firefox、Safari 和Edge)編寫功能測試,或者在無頭瀏覽器(例如​​Chrome Headless)中運行測試以加快執行速度,尤其是在CI/CD 管道中。它還可以在 Windows、macOS 和 Linux 上運行。

Selenium 提供了一種名為 Selenese 的測試領域特定語言,可以用許多流行的程式語言編寫測試,包括 JavaScript (Node.js)、Groovy、PHP、C#、Perl、Scala、Python 和 Ruby。

您可以開始使用它,而無需支付任何許可費用。其活躍的社群定期提供修復、插件和增強功能。您還可以找到大量線上文件和教學課程來進行故障排除。

硒簡史

Selenium Testing: The Complete Step-by-Step Tutorial

您有沒有想過為什麼 Selenium 的架構是這樣建構的,以及它如何如此有效地解決現實世界的測試挑戰?讓我們回顧它的演變,揭開其設計背後的故事。

2004 年:Selenium 的誕生是出於需要,ThoughtWorks 的 Jason Huggins 開發了一種工具來提高 Web 應用程式測試的效率。

Selenium Testing: The Complete Step-by-Step Tutorial
它最初被稱為“JavaScriptTestRunner”,後來更名為 Selenium——這是對 Mercury Interactive 的漫畫攻擊,因為硒元素可以對抗汞中毒,所以它是一個競爭工具。

2005:引入 Selenium Remote Control (RC) 來克服 JavaScript 的同源策略。它允許測試人員使用各種程式語言編寫腳本,並透過充當基於伺服器的代理程式在不同的瀏覽器中運行它們。

2006 年: Selenium IDE 作為一個簡單的 Firefox 插件出現。其記錄和回放功能使測試自動化即使對於非程式設計師也可以使用。

2008 年:Simon Stewart 推出了 Selenium WebDriver,它無需伺服器即可實現直接瀏覽器自動化。從 RC 到 WebDriver 的轉變標誌著重大飛躍,RC 於 2011 年隨 Selenium 2.0 正式棄用。

2011 年: Selenium Grid 透過允許測試在多個瀏覽器和環境中並行運行,徹底改變了測試執行,使大規模測試更加高效。

2018:Selenium WebDriver 成為官方 W3C 標準。

2021 年: Selenium 4 首次亮相,帶來了重大改進,包括原生 W3C WebDriver 支援、改進的 Selenium Grid 以及與開發人員工具的更深入整合。

2023 年:全年更新重點是擴展 WebDriver BiDi(雙向協定)支援並增強 Selenium Manager 的依賴管理。 Selenium 4.16 以性能和穩定性增強為這一年畫上了圓滿的句號。

2024 年: Selenium 4.27 引入了與 Chrome DevTools 協議 (CDP) 的擴展集成、增強了對 WebDriver BiDi 的支援、Selenium Grid 的性能改進以及更好地處理異步 JavaScript 執行。

硒的成分

Selenium 不僅僅是一個工具,而是一套工具,每個組件都有特定的用途。他們共同創建了一個強大的自動化測試生態系統。讓我們在下一節中將它們全部分解。

1. Selenium IDE(整合開發環境)

Chrome 和 Firefox 上的此瀏覽器擴充功能可讓您記錄、編輯和重播測試案例。使用 Selenium IDE,您無需編寫任何程式碼即可開始使用。它最適合快速原型設計和創建簡單的測試腳本,而無需深入編程。

2. Selenium WebDriver

Selenium WebDriver 是一個強大的工具,可讓您使用程式碼直接與瀏覽器互動。它可以處理動態 Web 元素和進階互動(例如拖放或檔案上傳),並使用驅動程式執行檔管理特定於瀏覽器的功能。 Selenium WebDriver 也是行動瀏覽器測試中的重要元件。

3.硒網格

當您的專案擴充功能並且需要跨不同瀏覽器、作業系統或裝置執行測試時,Selenium Grid 就會介入。

它使您能夠將測試分佈在多台機器上以加快執行速度。 Selenium Grid 使用集線器和節點架構運行,其中集線器協調測試執行請求,節點處理在指定瀏覽器或裝置上運行測試。

硒如何發揮作用?

Selenium Testing: The Complete Step-by-Step Tutorial

當您開始使用此工具時,您將首先使用其程式庫以您喜歡的程式語言(例如 Java、Python 或 C#)編寫腳本。您的腳本就像瀏覽器的一組指令 - 它告訴瀏覽器要做什麼,例如打開網頁或填寫表單。

一旦腳本準備就緒,Selenium 的 WebDriver 就會從中取得命令並將其傳送到瀏覽器驅動程式。然後,驅動程式將命令轉換為瀏覽器可以理解的格式。 W3C WebDriver 協定是用於通訊的標準,取代了舊的 JSON Wire 協定。

下一步,瀏覽器驅動程式將這些翻譯後的命令轉換為瀏覽器中的實際操作。無論您單擊連結還是滾動頁面,它都會執行這些操作,就像您手動執行它們一樣。

瀏覽器完成每個操作後,會回應瀏覽器驅動程式。

此回饋將傳遞給 WebDriver,WebDriver 將其傳回您的腳本。如果有任何錯誤,或者是否需要根據瀏覽器的當前狀態採取進一步的步驟,它就可以透過這種方式知道操作是否成功。

誰使用硒?

Selenium 是軟體開發生命週期 (SDLC) 技術團隊廣泛青睞的工具。以下是這些關鍵群體的使用方式:

1.開發者

他們使用 Selenium 來驗證前端程式碼在現實場景中的行為方式。它有利於在開發過程中捕獲特定於瀏覽器的怪癖,例如 JavaScript 執行問題或 CSS 渲染差異。

2. DevOps 與自動化工程師

使用 Selenium,建立可擴展且強大的測試管道對於 DevOps 和自動化工程師來說變得輕而易舉。他們可以跨多個瀏覽器和環境並行執行數百個測試,確保開發團隊更快的回饋循環。

此外,Selenium 與 Jenkins、GitHub Actions 和 Kubernetes 等工具的兼容性簡化了 CI/CD 工作流程,從而最大限度地降低了將有缺陷的程式碼部署到生產中的風險。

3.軟體測試員和 QA 專家

Selenium 的用途不僅僅是自動點擊 UI 元素。軟體測試人員可以利用它來編寫模仿現實世界使用者行為的腳本,例如登入、提交表單和完成交易。

另一方面,對於 QA 專家來說,Selenium 與回歸測試套件完美集成,以確保應用程式更新不會破壞關鍵功能,並無論更改頻率如何,都能繼續提供一致的效能。

Selenium 自動化測試的先決條件

讓我們討論一下為 Selenium 軟體測試做好充分準備需要做哪些準備。

1.了解程式設計基礎

首先,您應該能夠輕鬆實現頁面物件模型 (POM) 或工廠方法等設計模式。這些將幫助您創建更易於維護的模組化、可重複使用的測試腳本。

有效處理常見問題(例如未找到元素的異常或逾時)也至關重要,這樣您的測試才能保持可靠。如果您的應用程式嚴重依賴 JavaScript,了解如何在 Selenium 中管理非同步操作將減少不穩定的測試。

2.獲得非同步操作和定位器的專業知識

由於現代 Web 應用程式經常動態更新文件物件模型 (DOM),因此傳統定位器不可靠。要動態定位元素,您必須掌握靈活的 XPath 表達式和 CSS 選擇器。

利用 Selenium 4 的相對定位器。它們使您能夠根據元素相對於其他元素的位置找到元素,從而簡化複雜佈局的測試。

3.熟悉測試框架

您還需要了解流行的測試框架,例如 TestNG、JUnit 或 PyTest。這些可以幫助您有效地組織和執行測試套件。

它們具有並行執行、依賴管理和詳細範圍報告等基本功能,所有這些都使管理更大的測試環境變得更加容易。

將這些框架與 Selenium 整合將使您的測試具有可擴展性和可維護性,特別是當您在協作或 CI/CD 密集的環境中工作時。

4.建立瀏覽器驅動程式和設定的知識

我們不要忘記瀏覽器驅動程式及其配置。為了避免相容性問題,請使用 Selenium Manager 等工具自動對齊瀏覽器和 WebDriver 版本。

如果您要跨多個瀏覽器或平台進行測試,Docker 等工具可以透過提供一致的執行環境來簡化設定。

5.將 Selenium 與 CI/CD 管道整合

其中一項重要任務是將 Selenium 測試整合到 CI/CD 管道中。 Jenkins、GitLab CI/CD 或 GitHub Actions 等工具可以自動化您的測試,以便在程式碼更新時運行它們。這可確保及早發現問題,從而節省時間和精力。

您也可以利用 TestGrid 等雲端測試平台在各種裝置和瀏覽器上執行測試,而無需自行管理基礎架構。

6.培養有效排除故障的調試技能

調試是另一項關鍵技能。您應該熟悉用於檢查元素、分析控制台日誌和調試網頁呼叫的瀏覽器開發人員工具。

此外,了解如何使用 IDE 的偵錯工具進行逐步測試和日誌分析將使診斷腳本中的問題更快、更有效率。

7.透過 API 和 REST 測試擴充測試技能

許多現代應用程式嚴重依賴 API,將 Selenium 的 UI 測試與 API 測試相結合可以為您提供更廣泛的覆蓋範圍。像 Postman 或 RestAssured 這樣的工具非常適合此目的,並且可以很好地補充您的 Selenium 專業知識。

如何在 Selenium 中執行自動化測試

先決條件排除後,讓我們逐步完成 Selenium 自動化測試。我們還將討論一些範例和實用見解來幫助您入門。

1.完成測驗環境

在做任何事情之前,先設定好你的工具。安裝 Selenium WebDriver、瀏覽器驅動程式(例如適用於 Chrome 的 ChromeDriver 或適用於 Firefox 的 GeckoDriver)以及您計劃使用的任何測試框架,例如 TestNG 或 PyTest。

確保您的 WebDriver 版本與您的瀏覽器版本相符,以避免相容性問題。您可以使用 Selenium Manager 自動確保您的 WebDriver 版本與您的瀏覽器版本相符。

從小事做起,確保一切正常 - 例如編寫腳本來開啟網頁並列印標題。一旦有信心,就可以添加附加功能,例如與元素互動或驗證頁面行為。

此外,請記住更新您的依賴項以避免重大變更。

2.乾淨地建立你的腳本

結構良好的腳本可以在發生更改時節省您的時間並使協作更輕鬆。當您在團隊中工作時,其他人應該能夠理解並擴展您的測試,而無需快速理清混亂的程式碼。因此,花一些時間建立腳本。

使用 POM 將測試邏輯與 UI 細節分開。例如,如果您正在測試登入頁面,請建立一個「LoginPage」類別來處理使用者名字段、密碼欄位和登入按鈕等元素。然後,從測試腳本中呼叫這些方法,而不是每次都重寫定位器。

3.寫出有效的測試案例

測試案例應該清晰、具體且可操作。假設您正在測試一個電子商務網站。在這種情況下,一項測試可能會檢查搜尋「筆記型電腦」是否會顯示相關產品,而另一項測試可能會確認點擊「加入購物車」實際上會新增一個商品。

也要考慮邊緣情況。如果使用者輸入「laptop123$$$」或包含字母數字和特殊字元的類似輸入怎麼辦?搜尋仍然有效嗎?參數化您的測試可以讓您覆蓋多個場景,而無需重複程式碼。

4.在本地運行測試

在擴大規模之前,請在本地進行測試,因為這是驗證腳本的最簡單方法。測試密碼更改功能?在本機瀏覽器上運行它以確認輸入和輸出符合預期。

本地運行也非常適合調試。如果出現問題,您可以暫停執行、檢查瀏覽器並即時調整腳本。使用無頭模式跳過 UI 渲染。當您不需要查看瀏覽器運行情況但想要結果時,它是完美的。

一旦本地一切正常運行,您就可以放心地在 CI/CD 管道或分散式設定等更大的環境中運行它。

5.以並行方式執行多個測試

為什麼?因為這樣可以節省時間。

這裡有一個場景:如果您需要測試 Chrome 和 Firefox 上的搜尋、登入和結帳功能,您可以設定 Selenium Grid 或使用 TestNG 的並行執行。

並行執行還可以更快地發現特定於瀏覽器的問題。例如,下拉式選單可能在 Chrome 中工作,但在 Firefox 中表現奇怪。及早解決這些差異可以為您省去以後的麻煩。

6.處理動態元素

動態元素可能很棘手,但它們在現代網頁應用程式中無處不在。想像一下,每次重新載入時,「提交」按鈕的 ID 都會發生變化的頁面。您可以使用 Selenium 編寫程式碼片段來定位它並與之互動。

使用靈活的 XPath 表達式來識別文字包含「提交」一詞的按鈕元素。這樣,程式碼可確保自動化保持穩健並適應網頁結構的變更。

7.定期除錯與記錄

當測驗失敗時,日誌可以拯救你。例如,如果登入測試失敗,您可以記錄目前 URL 和頁面來源以了解出了什麼問題。使用日誌庫,例如 Python 內建的「日誌記錄」模組、Java 中的 Log4j 或 SLF4J。

除了日誌之外,失敗的螢幕截圖也非常寶貴。配置您的測試以在發生故障時自動捕獲螢幕截圖 - 這是識別缺少元素或意外 UI 更改等問題的快速方法。

8.在 CI/CD 管道中運行測試

使用 Jenkins 或 GitHub Actions 等工具自動化您的測試。

例如,每次您的團隊推送新程式碼時,您的管道都可以自動提取最新變更、執行測試並報告結果。這就像有一雙額外的眼睛全天候 (24/7) 監視您的專案。此設定還可以透過提供即時回饋來加快開發速度。

Selenium 軟體測試的獨特挑戰

雖然 Selenium 是瀏覽器自動化的強大工具,但它也有自己的一組障礙 - 其中一些可能不會立即明顯。以下是 Selenium 軟體測試中比較棘手的面向:

  • 雖然Selenium支援多種瀏覽器,但瀏覽器渲染頁面方式的細微差別可能會導致測試結果不一致。因此,在所有支援的瀏覽器上定期驗證您的測試以確保準確性至關重要。
  • 大規模運行 Selenium 測試需要強大的基礎設施。設定和管理 Selenium Grid 或使用雲端測試平台可以緩解這種情況,但它們可能會帶來額外的成本和專業知識。
  • Selenium 測試取決於與瀏覽器版本相符的 WebDriver。當瀏覽器更新時,WebDriver 通常會滯後,導致相容性問題。使用Selenium Manager(Selenium 4.6中引入)自動處理驅動程式版本管理。
  • 驗證碼和 MFA 經常會產生僅 Selenium 無法繞過的問題。因此,最好考慮停用驗證碼的測試環境,或使用支援驗證碼解決服務的瀏覽器自動化 API 等工具。
  • 為每個小更改更新定位器和腳本可能會變得非常耗時。使用人工智慧驅動的工具實現自我修復定位器,當 UI 變更時自動調整定位器。

硒測試的未來:未來是什麼?

隨著網路的發展,Selenium 也不斷發展。但下一步是什麼?哪些前瞻性趨勢和可能性可以塑造 Selenium 測試?

首先,視覺回歸工具的興起表明,傳統測試並不總是能捕捉到 UI 差異。但如果 Selenium 整合了對視覺測試的本機支持,則情況並非如此。

您可以驗證按鈕是否完美對齊、顏色正確以及在所有裝置上看起來都相同,而不是斷言按鈕可點擊。

Selenium 腳本可能包含「assertVisualConsistency(page, “baseline_screenshot”)」等指令,且任何 UI 偏差都會自動標記。

您聽過量子運算的巨大飛躍嗎?現在聽起來可能像科幻小說,但這最終可能會影響 Selenium 測試。

量子演算法可以以指數速度更快地處理大量測試套件,從而能夠在數百個環境中進行即時測試。這可以使大規模跨瀏覽器和跨裝置測試瞬間完成。

最後,想像一個拖放介面,您可以在其中直觀地定義測試場景,然後 Selenium 產生底層程式碼。雖然它傳統上是開發人員的工具,但未來可能會帶來無程式碼或低程式碼擴充。

這將降低非技術測試人員的進入門檻,同時保持 Selenium 對進階使用者的靈活性。

使用 TestGrid 增強您的 Selenium 測試

TestGrid 是一個一體化平台,旨在確保您的 Web 應用程式在 Chrome、Firefox、Safari、Opera 和 Edge 等主要瀏覽器以及各種作業系統和裝置上完美運作。

借助 TestGrid,您可以在雲端或本地運行自動化 Selenium 測試,讓您能夠靈活地在最適合您的地方進行測試。其直覺的介面使設定和管理測試變得輕而易舉 - 即使您不是技術專家。

是什麼讓 TestGrid 脫穎而出?

  • 忘記複雜的編碼 - 記錄和回放測試或使用人工智慧驅動的低程式碼選項來簡化您的測試過程。
  • 一次執行多個測試,大幅縮短測試時間。
  • 從詳細報告中取得可操作的見解,以改善應用程式的效能和安全性。 其智慧功能可自動修復損壞的測試並偵測 UI 更改,從而減少維護難題。

準備好將您的 Selenium 測試提升到新的水平了嗎?

結論

Selenium 測試透過強大的自動化功能簡化了 Web 應用程式測試。掌握其工具和技術可以提高測試效率,確保現代應用程式的可靠、可擴展和高品質的軟體交付。

資料來源:本文原刊於 testgrid.io。

以上是Selenium 測試:完整的逐步教程的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn