Selenium 4.8.3:如何从本地.cache文件加载驱动及替代WebDriverManager方案?
Selenium 4.8.3 本地缓存驱动版本替代方案
Selenium 4 自带了内置驱动管理功能,完全能替代WebDriverManager,还支持从本地.cache目录读取驱动,不用每次都下载,刚好解决VPN/代理限制导致的连接问题。
核心逻辑
Selenium 4的DriverManager类默认会把驱动缓存到系统用户目录下的.cache/selenium文件夹(Windows对应%USERPROFILE%\.cache\selenium,Linux/macOS对应~/.cache/selenium),和你提到的本地缓存路径一致。只要缓存里有对应版本的驱动,就不会触发下载请求。
指定版本实例化驱动的代码(Edge为例)
不用额外依赖WebDriverManager,直接用Selenium自带API即可:
import org.openqa.selenium.edge.EdgeDriver; import org.openqa.selenium.edge.EdgeOptions; import org.openqa.selenium.remote.service.DriverFinder; import org.openqa.selenium.remote.service.DriverService; public WebDriver getEdgeDriver() { // 你需要的驱动版本 String targetVersion = "112.0.1722.34"; EdgeOptions options = new EdgeOptions(); // 从本地缓存查找对应版本的驱动服务 DriverService edgeService = DriverFinder.getPath(EdgeDriverService.createDefaultService(), targetVersion, options); return new EdgeDriver(edgeService, options); }
补充说明
- 如果缓存里还没有目标版本的驱动,第一次运行还是会尝试下载。你可以手动把对应版本的驱动放到缓存目录的对应子文件夹里,比如Linux下路径大概是
~/.cache/selenium/edge/linux64/112.0.1722.34/msedgedriver,根据你的系统和浏览器调整路径即可。 - 要是你已经知道缓存里驱动的具体路径,也可以直接设置系统属性简化代码:
import org.openqa.selenium.edge.EdgeDriver; import org.openqa.selenium.edge.EdgeOptions; public WebDriver getEdgeDriver() { // 直接指定本地缓存里的驱动路径 System.setProperty("webdriver.edge.driver", "/home/yourname/.cache/selenium/edge/linux64/112.0.1722.34/msedgedriver"); return new EdgeDriver(new EdgeOptions()); }
内容的提问来源于stack exchange,提问作者Nour Alaa
相关产品推荐
相关产品推荐

