selenium在自動化測試中,通常需要使用瀏覽器驅動來與瀏覽器進行交互。然而,手動下載、安裝、以及管理這些驅動非常麻煩,尤其是當驅動版本頻繁更新時。為此,webdriver-manager庫提供了一個極簡的方案,自動幫我們下載、更新和管理驅動,使 Selenium 代碼更簡潔優雅。
webdriver-managergit地址:GitHub - SergeyPirogov/webdriver_manager
webdriver對比
在沒有 Webdriver Manager 的情況下,我們需要手動完成以下步驟:
- 下載對應瀏覽器的驅動程序。
- 將其解壓到本地路徑。
- 在代碼中手動指定驅動路徑。
每當驅動更新時,這個流程需要重複。使用 Webdriver Manager 後,我們只需兩步:
- 安裝 Webdriver Manager
- 在代碼中調用 Webdriver Manager 進行驅動自動下載和管理。
支持的瀏覽器
webdriver-manager 是一個 Python 庫,它的主要作用是自動管理不同瀏覽器的驅動程序。支持的瀏覽器包括:
- Chrome
- Edge
- Firefox
- IE
- Opera
使用教程
安裝Webdriver Manager
pip install webdriver-manager
在代碼中使用
1、使用Chrome驅動
在 Selenium 3 和 Selenium 4 中,代碼略有不同:
查看Selenium版本:
pip list | grep selenium
Selenium 3:
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(ChromeDriverManager().install())
Selenium 4:
from selenium import webdriver
from selenium.webdriver.chrome.service import Service as ChromeService
from webdriver_manager.chrome import ChromeDriverManager
driver = webdriver.Chrome(service=ChromeService(ChromeDriverManager().install()))
2.其他瀏覽器中使用
類似地,Webdriver Manager 也支持 Edge、Firefox、IE 和 Opera 瀏覽器。這裏以 Edge 和 Firefox 為例:
-
Edge
from selenium import webdriver from webdriver_manager.microsoft import EdgeChromiumDriverManager driver = webdriver.Edge(service=EdgeService(EdgeChromiumDriverManager().install())) -
Firefox:
from selenium import webdriver from webdriver_manager.firefox import GeckoDriverManager driver = webdriver.Firefox(service=FirefoxService(GeckoDriverManager().install()))
Webdriver Manager 會自動檢測系統和瀏覽器的版本,並下載相應的驅動,非常適合那些需要頻繁更新的項目。
Webdriver Manager 的高級配置
Webdriver Manager 允許通過環境變量或代碼直接設置多個配置。以下是一些常見的配置項:
-
GitHub Token (
GH_TOKEN):有時候從 GitHub 下載驅動會受限,設置 GitHub Token 可以繞過這個問題。import os os.environ['GH_TOKEN'] = 'your_github_token' -
日誌級別 (
WDM_LOG):可以關閉 Webdriver Manager 的日誌輸出。os.environ['WDM_LOG'] = '0' -
緩存管理:默認情況下,驅動的緩存時間為 1 天,可以通過
cache_valid_range參數自定義緩存時間。from webdriver_manager.chrome import ChromeDriverManager from webdriver_manager.core.driver_cache import DriverCacheManager ChromeDriverManager(cache_manager=DriverCacheManager(valid_range=7)).install()
總結
webdriver-manager 簡化了瀏覽器驅動管理,讓我們的自動化測試更加簡潔高效。只需幾行代碼,我們就可以輕鬆地集成不同的瀏覽器驅動,專注於測試邏輯,而不用擔心驅動版本的更新和路徑配置。