小编最近被问得最多的问题就是:"为什么我的Selenium脚本突然就跑不起来了?那个chromedriver到底该怎么配啊?"
别急,今天小编就带大家认识一个神器------WebDriverManager ,让你彻底告别驱动版本不匹配的噩梦,而且 10分钟就能学会!
吐槽大会
我们写的自动化脚本,昨天还能正常运行,今天上班运行就报错了:
vbnet
selenium.common.exceptions.WebDriverException: Message: 'chromedriver' executable needs to be in PATH
或者:
makefile
SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version XX
原因很简单------你的 Chrome 浏览器又双叒叕自动升级了,而你的 chromedriver 还是老版本的。
以前我们的解决方案是:去官网找对应版本 → 下载 → 解压 → 放到指定目录 → 配置环境变量 → 重启IDE → ......
为此小编自己还写了一个下载 chromedriver 的软件
教程在这里👉 mp.weixin.qq.com/s/s1BG1ev9T...
累不累?烦不烦?
今天小编告诉你:这些破事,一行代码就能解决。
什么是 WebDriverManager?
WebDriverManager 是一个自动化管理浏览器驱动(chromedriver、geckodriver、edgedriver等)的库。它会自动:
- 检测你当前电脑上安装的浏览器版本
- 从官方源下载与之匹配的驱动
- 自动配置好路径
- 直接让 Selenium 用上正确的驱动
全程你只需要写一行安装代码,其他全部自动完成。 而且支持 Chrome、Firefox、Edge、Opera 等主流浏览器。
1、安装 WebDriverManager
这里小编以 Python 为例(Java 的用法也会简单提一下,别急)。
打开你的终端(cmd / PowerShell / Terminal),输入:
pip install webdriver-manager
看到 Successfully installed 就说明装好了
💡 小编提示:建议使用 Python 3.12 以上版本
2、使用教程
我们以:自动打开百度,搜索"大飞记Python",为例
python
import time
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
# 创建 Service 对象,自动下载并指定 chromedriver 路径
service = Service(ChromeDriverManager().install())
# 启动浏览器
driver = webdriver.Chrome(service=service)
# 打开百度
driver.get("https://www.baidu.com")
# 输入'大飞记Python',点击搜索
driver.find_element(By.ID, "chat-textarea").send_keys("大飞记Python")
driver.find_element(By.ID, "chat-submit-button").click()
# 等待3秒
time.sleep(3)
# 关闭浏览器
driver.quit()
注意:第一次运行时会有点慢(要下载驱动、初始化环境等),之后再运行直接从缓存里读取,就快了

以后我们再运行脚本,WebDriverManager会先从缓存中查找是否有匹配的版本,当本地没有匹配的驱动时,会自动联网下载对应匹配的版本。再也不需要我们手动去操作了👍
同时WebDriverManager也支持 FireFox、Edge、Opera、甚至IE浏览器😂
3、指定版本
3.1、指定驱动版本(不推荐新手尝试,但可以了解)
ini
ChromeDriverManager(driver_version="114.0.5735.90").install()
3.2、离线模式(网络不好的时候用)
设置环境变量 WDM_OFFLINE=1,脚本就会只读取本地缓存,不再联网检查更新。
3.3、在 Java 中使用(给隔壁 Java 朋友看一眼)
typescript
import io.github.bonigarcia.wdm.WebDriverManager;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
public class Test {
public static void main(String[] args) {
WebDriverManager.chromedriver().setup();
WebDriver driver = new ChromeDriver();
driver.get("https://www.baidu.com");
driver.quit();
}
}
Maven 依赖:
xml
<dependency>
<groupId>io.github.bonigarcia</groupId>
<artifactId>webdrivermanager</artifactId>
<version>5.9.2</version>
</dependency>
WebDriverManager 的优势
| 传统方式 | WebDriverManager 方式 |
|---|---|
| 手动下载驱动 | ✅ 自动下载 |
| 手动比对浏览器版本 | ✅ 自动匹配 |
| 配置环境变量 / 指定路径 | ✅ 一行代码自动设置 |
| 浏览器一升级就报错 | ✅ 下次运行自动更新驱动 |
| 团队协作时每人要配一遍 | ✅ 代码一致,缓存共享 |
一句话:省下来的时间,你可以多刷几条抖音
"傻瓜式"代码模板
以后我们编写任何 Selenium 脚本时,直接复制这段开头就行啦~
python
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
# 自动处理驱动
service = Service(ChromeDriverManager().install())
driver = webdriver.Chrome(service=service)
# 打开网址等自动化逻辑
driver.get("自己的URL")
# 更多你的代码 ...
driver.quit()
如果你用的是 Selenium 4.6 及以上版本 ,其实官方已经内置了类似功能(Selenium Manager),连 webdriver-manager 库都不用装,直接使用webdriver.Chrome() 就能自动处理。但小编实测下来,稳定性不如WebDriverManager,胜在足够简单,小伙伴们按照自己的需求选择吧~
最后,小编的一点私心
如果这篇文章对你有帮助,欢迎点赞、在看、转发 三连呀~