
用 SeleniumBase 輕鬆搞定網頁自動化測試!新手也能快速上手
網址: [請在此處填寫文章發布後的實際網址]
大家好!身為一個在台灣打滾的軟體工程師,今天要來跟大家介紹一個超好用的 Python 網頁自動化測試框架:SeleniumBase。 如果你跟我一樣,常常需要測試網站、爬取資料,或是需要自動化一些網頁上的操作,那 SeleniumBase 絕對是你的好幫手!
為什麼選擇 SeleniumBase?
你可能會想,市面上已經有 Selenium 了,為什麼還要用 SeleniumBase 呢?簡單來說,SeleniumBase 就像是 Selenium 的加強版,它在 Selenium 的基礎上,做了許多優化和封裝,讓網頁自動化測試變得更簡單、更快速、更可靠。
對新手友善: SeleniumBase 提供了許多簡單易懂的 API,讓你不需要寫大量的程式碼,就能完成複雜的網頁操作。
功能強大:SeleniumBase 除了基本的網頁操作功能外,還內建了許多實用的工具,例如:自動下載 WebDriver、自動處理等待、截圖、錄製測試腳本等等。
容易整合:SeleniumBase 可以輕鬆地與 pytest 等測試框架整合,讓你更方便地管理和執行測試。
總之,SeleniumBase 就像是一個 All-in-one 的網頁自動化工具箱,可以滿足你各種不同的需求。
SeleniumBase 核心概念
在深入介紹 SeleniumBase 的用法之前,我們先來了解一下它的幾個核心概念:
- WebDriver:WebDriver 是 Selenium 的核心,它負責與瀏覽器進行互動。SeleniumBase 會自動幫你下載和管理 WebDriver,讓你不需要擔心版本相容性的問題。
- CSS Selector:CSS Selector 是一種用來定位網頁元素的方式。SeleniumBase 預設使用 CSS Selector,你可以透過瀏覽器的開發者工具來找到元素的 CSS Selector。
- 方法 (Methods):SeleniumBase 提供了許多方法,讓你方便地操作網頁元素,例如:
open()
、type()
、click()
、assert_element()
等等。
掌握了這幾個核心概念,你就能更輕鬆地上手 SeleniumBase。
SeleniumBase 安裝與設定
首先,你需要先確認你的電腦上已經安裝了 Python 和 Git。 如果還沒有安裝,可以到以下網址下載:
- Python: https://www.python.org/downloads/
- Git: https://git-scm.com/
安裝完成後,打開你的終端機 (Terminal) 或命令提示字元 (Command Prompt),輸入以下指令來安裝 SeleniumBase:
pip install seleniumbase
如果你之前已經安裝過 SeleniumBase,可以使用以下指令來更新到最新版本:
pip install seleniumbase --upgrade
安裝完成後,你可以輸入 seleniumbase
或 sbase
來確認 SeleniumBase 是否安裝成功。
SeleniumBase 基本使用範例
接下來,我們來看一個簡單的 SeleniumBase 使用範例。 首先,建立一個名為 my_first_test.py
的檔案,並輸入以下程式碼:
from seleniumbase import BaseCase
BaseCase.main(__name__, __file__)
class MyTestClass(BaseCase):
def test_swag_labs(self):
self.open("https://www.saucedemo.com")
self.type("#user-name", "standard_user")
self.type("#password", "secret_sauce\n")
self.assert_element("div.inventory_list")
self.assert_exact_text("Products", "span.title")
self.click('button[name*="backpack"]')
self.click("#shopping_cart_container a")
self.assert_exact_text("Your Cart", "span.title")
self.assert_text("Backpack", "div.cart_item")
self.click("button#checkout")
self.type("#first-name", "SeleniumBase")
self.type("#last-name", "Automation")
self.type("#postal-code", "77123")
self.click("input#continue")
self.assert_text("Checkout: Overview")
self.assert_text("Backpack", "div.cart_item")
self.assert_text("29.99", "div.inventory_item_price")
self.click("button#finish")
self.assert_exact_text("Thank you for your order!", "h2")
self.assert_element('img[alt="Pony Express"]')
self.js_click("a#logout_sidebar_link")
self.assert_element("div#login_button_container")
這個範例程式碼會自動開啟 Chrome 瀏覽器,並在 https://www.saucedemo.com 這個網站上進行一些操作,例如:輸入帳號密碼、點擊按鈕、驗證文字等等。
要執行這個測試,你可以在終端機中輸入以下指令:
pytest my_first_test.py
如果一切順利,你應該會看到測試通過的訊息。
SeleniumBase 常用方法介紹
SeleniumBase 提供了許多常用的方法,以下是一些常用的方法介紹:
self.open(url)
:開啟指定的網頁。self.type(selector, text)
:在指定的元素中輸入文字。self.click(selector)
:點擊指定的元素。self.click_link(link_text)
:點擊包含指定文字的連結。self.assert_element(selector)
:驗證指定的元素是否存在。self.assert_text(text, selector)
:驗證指定的元素中是否包含指定的文字。self.get_text(selector)
:取得指定元素的文字內容。self.sleep(seconds)
:暫停指定的秒數。
更多 SeleniumBase 方法可以參考官方文件:https://github.com/seleniumbase/SeleniumBase/blob/master/help_docs/method_summary.md
SeleniumBase 進階技巧
除了基本的使用方法外,SeleniumBase 還有一些進階技巧,可以幫助你更有效地進行網頁自動化測試:
- Demo Mode: 在執行測試時加上
--demo
參數,可以讓測試過程更慢速,並且會標示出正在操作的元素,方便你觀察測試的執行過程。pytest my_first_test.py --demo
- Headless Mode: 在執行測試時加上
--headless
參數,可以讓測試在背景執行,不需要開啟瀏覽器視窗,可以節省資源並加快測試速度。pytest my_first_test.py --headless
- Undetected Chrome (UC Mode): 有些網站會偵測是否使用自動化工具,並阻止自動化工具的訪問。 SeleniumBase 提供了 UC Mode,可以繞過這些偵測,讓你順利地進行自動化測試。 使用 UC Mode,在執行測試時加上
--uc
或--undetected
參數。pytest my_first_test.py --uc
- 錄製測試腳本: SeleniumBase 內建錄製工具,可以將你的瀏覽器操作錄製成測試腳本。在執行測試時加上
--recorder
參數,可以啟動錄製工具。pytest my_first_test.py --recorder
個人實作心得與錯誤排除指南
在使用 SeleniumBase 的過程中,我也遇到了一些問題,以下是一些我個人實作的心得和錯誤排除指南:
- 元素定位問題: 有時候,網頁元素的 CSS Selector 可能會因為網頁的改版而改變,導致測試失敗。 這時候,你需要重新檢查元素的 CSS Selector,並更新你的測試腳本。
- 等待問題: 有些網頁的元素可能需要一些時間才能載入完成,如果你的測試腳本在元素載入完成之前就開始操作,可能會導致測試失敗。 這時候,你可以使用
self.wait_for_element()
方法來等待元素載入完成。 - WebDriver 版本問題: SeleniumBase 會自動幫你下載 WebDriver,但有時候可能會因為瀏覽器版本的更新,導致 WebDriver 版本不相容。 這時候,你可以嘗試更新 SeleniumBase 或手動下載 WebDriver。
SeleniumBase vs. Raw Selenium
很多人會問 SeleniumBase 跟 Selenium 到底有什麼不一樣? 這邊簡單說明一下:
特性 | Selenium (Raw) | SeleniumBase |
---|---|---|
學習曲線 | 較陡峭 | 較平緩,對新手友善 |
程式碼量 | 較多 | 較少,更簡潔易懂 |
自動等待 | 需要手動設定 | 內建自動等待機制 |
WebDriver 管理 | 需要手動管理 | 自動下載與管理 |
報告與截圖 | 需要額外設定 | 內建 Dashboard 與報表功能,自動截圖 |
進階功能 | 需要自行擴充 | 內建 UC Mode, Recorder 等進階功能 |
簡單來說,SeleniumBase 讓 Selenium 變得更易用,更強大。
總結
SeleniumBase 是一個非常棒的 Python 網頁自動化測試框架,它可以幫助你更輕鬆、更快速地完成網頁自動化測試。 無論你是新手還是老手,都非常值得一試!
希望這篇文章對你有所幫助,如果你有任何問題或建議,歡迎在下方留言! 祝大家測試順利!
參考閱讀
https://github.com/seleniumbase/SeleniumBase