selenium在自动化测试中,通常需要使用浏览器驱动来与浏览器进行交互。然而,手动下载、安装、以及管理这些驱动非常麻烦,尤其是当驱动版本频繁更新时。为此,webdriver-manager
库提供了一个极简的方案,自动帮我们下载、更新和管理驱动,使 Selenium 代码更简洁优雅。
webdriver-manager
git地址: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
简化了浏览器驱动管理,让我们的自动化测试更加简洁高效。只需几行代码,我们就可以轻松地集成不同的浏览器驱动,专注于测试逻辑,而不用担心驱动版本的更新和路径配置。