为什么需要自动下载浏览器驱动?

血泪场景重现

  1. 新人入职第一天

    • 花3小时配置Chrome/Firefox驱动
    • 版本不匹配导致SessionNotCreatedException
  2. 浏览器自动更新后

    • 所有测试脚本突然崩溃
    • 手动查找驱动耗时长

终极解决方案:自动下载驱动

✅ 动态检测浏览器版本
✅ 下载匹配的驱动程序
✅ 自动设置环境变量


3行代码极简解决方案(Python版)

安装必备库
pip install webdriver-manager  # 核心神器
自动下载驱动示例
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
from webdriver_manager.firefox import GeckoDriverManager# Chrome自动下载(会返回驱动路径)
driver_path = ChromeDriverManager().install()  # 创建浏览器实例(无需手动指定路径)
driver = webdriver.Chrome(executable_path=driver_path)
driver.get("https://www.baidu.com")# Firefox同样简单
firefox_path = GeckoDriverManager().install()
driver = webdriver.Firefox(executable_path=firefox_path)
执行效果
[WDM] - Current google-chrome version is 124.0.6367
[WDM] - Get LATEST driver version for 124.0.6367
[WDM] - Driver [C:\Users\Sam\.wdm\drivers\chromedriver\win64\124.0.6367.78\chromedriver.exe] found in cache

核心原理拆解(文字版流程图)

1. 检测已安装的浏览器版本│├── Windows:查询注册表 `HKEY_CURRENT_USER\Software\Google\Chrome\BLBeacon`├── macOS:执行 `/Applications/Google\ Chrome.app/Contents/MacOS/Google\ Chrome --version`├── Linux:解析 `google-chrome --version` 输出│
2. 访问官方驱动仓库(无需翻墙镜像)│├── Chrome:https://chromedriver.storage.googleapis.com├── Firefox:https://github.com/mozilla/geckodriver/releases│
3. 下载匹配版本驱动│├── 自动识别操作系统(Win/Mac/Linux)├── 解压压缩包到缓存目录│
4. 返回驱动绝对路径

进阶实战:自定义控制方案

场景1:强制更新最新驱动
# 忽略缓存强制下载
ChromeDriverManager(version="latest").install()
场景2:指定特定版本
# 下载指定版本驱动(兼容旧浏览器)
ChromeDriverManager(version="114.0.5735.90").install()
场景3:设置代理和镜像源
import os# 方法1:设置环境变量
os.environ["WDM_PROXY"] = "http://company-proxy:8080"# 方法2:代码配置
ChromeDriverManager(proxy="http://user:pass@proxy:8080",  # 代理url="https://npm.taobao.org/mirrors/chromedriver"  # 国内镜像
).install()
场景4:自定义缓存路径
# 修改默认存储位置
ChromeDriverManager(cache_valid_range=30,  # 缓存有效期30天path="/tmp/my_drivers" # 自定义目录).install()

跨语言支持方案

语言库名称安装命令
Javawebdrivermanagermvn io.github.bonigarcia:webdrivermanager:5.6.3
NodeJSwebdriver-managernpm install webdriver-manager
C#WebDriverManager.Netdotnet add package WebDriverManager
Java示例(Spring Boot)
import io.github.bonigarcia.wdm.WebDriverManager;public class AutoDriverTest {public static void main(String[] args) {// 自动下载Chrome驱动WebDriverManager.chromedriver().setup();// 创建浏览器实例WebDriver driver = new ChromeDriver();driver.get("https://baidu.com");}
}

常见故障排除指南

  1. 下载速度慢

    • 解决方案:使用国内镜像源
      ChromeDriverManager(url="https://registry.npmmirror.com/-/binary/chromedriver").install()
      
  2. 公司网络禁止访问

    • 解决方案:先手动下载驱动,再指定路径
      driver = webdriver.Chrome(executable_path="D:/drivers/chromedriver.exe")
      
  3. 证书验证错误

    • 解决方案:关闭SSL验证(仅限测试环境)
      ChromeDriverManager(ssl_verify=False).install()
      
  4. 权限不足

    • Linux/Mac解决方案:
      sudo chmod +x /path/to/chromedriver
      

「小贴士」:点击头像→【关注】按钮,获取更多软件测试的晋升认知不迷路! 🚀

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/bicheng/83715.shtml
繁体地址,请注明出处:http://hk.pswp.cn/bicheng/83715.shtml
英文地址,请注明出处:http://en.pswp.cn/bicheng/83715.shtml

如若内容造成侵权/违法违规/事实不符,请联系英文站点网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

NLP常用工具包

✨做一次按NLP项目常见工具的使用拆解 1. tokenizer from torchtext.data.utils import get_tokenizertokenizer get_tokenizer(basic_english) text_sample "Were going on an adventure! The weather is really nice today." tokens tokenizer(text_sample) p…

在 Vue 的template中使用 Pug 的完整教程

在 Vue 的template中使用 Pug 的完整教程 引言 什么是 Pug? Pug(原名 Jade)是一种高效的网页模板引擎,通过缩进式语法和简洁的写法减少 HTML 的冗长代码。Pug 省略了尖括号和闭合标签,使用缩进定义结构,…

【Android基础回顾】四:ServiceManager

Android 中的 ServerManager 是 Android 框架中一个用于管理系统服务的核心机制。它是 Binder IPC 的一部分,用于在客户端和服务端之间建立联系,广泛应用于系统服务(如 ActivityManager、WindowManager 等)的注册与获取。 1 Serv…

【Android基础回顾】一:Binder机制是什么?有什么用?

Android中的Binder机制是Android系统中最核心和最基础的进程间通讯机制。 1 什么是进程间通讯机制(IPC)? 众所周知,Android系统基于Linux开发,Linux系统里面本来就有进程间通讯机制。 1.1 Linux的IPC(Inter-Process Communication)概览 它…

Go语言爬虫系列教程5:HTML解析技术以及第三方库选择

Go语言爬虫系列教程5:HTML解析技术以及第三方库选择 在上一章中,我们使用正则表达式提取网页内容,但这种方法有局限性。对于复杂的HTML结构,我们需要使用专门的HTML解析库。在这一章中,我们将介绍HTML解析技术以及如何…

AtCoder 第408​场初级竞赛 A~E题解

A Timeout 【题目链接】 原题链接:A - Timeout 【考点】 模拟 【题目大意】 长老会在 s 秒后睡去,进过 n 次叫醒,长老最后能否是保持清醒。 【解析】 模拟每一次拍击叫醒的过程,查看本次时间距上次时间是否大于 s。注意:第一次拍击叫醒应和 0 秒相减。 【难度】 …

Unity VR/MR开发-VR设备与适用场景分析

视频讲解链接:【XR马斯维】VR/MR设备与适用场景分析?【UnityVR/MR开发教程--入门】_游戏热门视频

MyBatis 查询功能实现全流程

一、创建maven项目 配置好相应的jdk 二、在数据库建立相应的表格 1.因为Mybatis实际是对sql表的一系列操作,所以我们新建一个数据库 2.在查询界面运行下面指令创建一个user表 CREATE TABLE user (id int(11) NOT NULL AUTO_INCREMENT,username varchar(32) NOT NU…

tcp/udp

tcp/udp协议概述 传输层协议基本概念 传输层协议建立在网络层和会话层之间,为应用层实体提供端到端的通信功能,确保数据包的顺序传送及数据的完整性。它利用网络层提供的服务,并通过传输层地址(端口号)提供给高层用户…

k8s集群安装坑点汇总

前言 由于使用最新的Rocky9.5,导致kubekey一键安装用不了,退回Rocky8麻烦机器都建好了,决定手动安装k8s,结果手动安装过程中遇到各种坑,这里记录下; k8s安装 k8s具体安装过程可自行搜索,或者deepseek; 也…

深入解析 Dotnet-Boxed.Framework:提升 .NET 开发效率的利器

在现代 .NET 开发中,框架和工具的选择对项目的开发效率和长期维护至关重要。Dotnet-Boxed.Framework 是一个开源框架,旨在简化开发流程,提高生产力。它通过一组实用的工具和自动化功能,帮助开发者快速构建高质量的应用程序。本文将…

如何轻松地将文件从 PC 传输到 iPhone?

传统上,您可以使用 iTunes 将文件从 PC 传输到 iPhone,但现在,使用 iTunes 已不再是唯一的选择。现在有多种不同且有效的方法可以帮助您传输文件。在今天的指南中,您可以找到 8 种使用或不使用 iTunes 传输文件的方法,…

Kafka深度解析与原理剖析

文章目录 一、Kafka核心架构原理1. **分布式协调与选举**2. **ISR、OSR与HW机制**3. **高性能存储设计**4. **刷盘机制 (Flush)**5. **消息压缩算法**二、高可用与消息可靠性保障1. **数据高可用策略**2. **消息丢失场景与规避**3. **顺序消费保证**三、Kafka高频面试题精析1. …

【教学类】20250605立体纸盘(3边形-22边形,角度5、10……40,45)

背景需求 在《自助餐》活动中, 【教学类-53-01】20240918自助餐餐盘-CSDN博客文章浏览阅读984次,点赞29次,收藏11次。【教学类-53-01】20240918自助餐餐盘https://blog.csdn.net/reasonsummer/article/details/142340542?spm1011.2415.300…

GC1809:高性能24bit/192kHz音频接收芯片解析

1. 芯片概述 GC1809 是数字音频接收芯片,支持IEC60958、S/PDIF、AES3等协议,集成8选1输入切换、低抖动时钟恢复和24bit DAC,适用于家庭影院、汽车音响等高保真场景。 核心特性 高精度:24bit分辨率,动态范围105dB&…

Next.js 中间件鉴权绕过漏洞 CVE-2025-29927

前言:CVE-2025-29927 是一个影响 Next.js 的严重漏洞&#xff0c;源于开发者信任了客户端请求中携带的 X-Middleware-Rewrite 头部字段。攻击者可以手动构造该头部&#xff0c;实现绕过中间件逻辑&#xff0c;访问本应受保护的资源或 API。 影响版本&#xff1a;Next.js < …

第1章 数据分析简介

第1章 数据分析简介 1.1 数据分析 当今世界对信息技术依赖日深,每天产生和存储海量数据,来源于自动检测系统、传感器、科学仪器,以及银行取钱、买东西、写博客、发微博等日常行为。 数据与信息在形式上不同:数据是无形式可言的字节流,难理解其本质;信息是对数据集处理后…

边缘计算网关赋能沸石转轮运行故障智能诊断的配置实例

一、项目背景 在环保行业&#xff0c;随着国家对大气污染治理要求的不断提高&#xff0c;VOCs废气处理成为了众多企业的重要任务。沸石转轮作为一种高效的VOCs治理设备&#xff0c;被广泛应用于石油化工、汽车制造、印刷包装等主流行业。这些行业生产规模大、废气排放量多&…

20250602在Ubuntu20.04.6下修改压缩包的日期和时间

rootrootrootroot-X99-Turbo:~$ ll -rwxrwxrwx 1 rootroot rootroot 36247187308 5月 23 10:23 Android13.0地面站.tgz* rootrootrootroot-X99-Turbo:~$ touch 1Android13.0地面站.tgz rootrootrootroot-X99-Turbo:~$ ll -rwxrwxrwx 1 rootroot rootroot 36247187308 6月…

windows无法安装到这个磁盘,选中的磁盘采用gpt分区仪式

解决办法&#xff1a; 我才用的是一个网友分享的微软官方解决办法&#xff0c;成功了&#xff0c;但是不知道会不会i有什么影响。将所有分区删掉&#xff0c;这时磁盘变成为分配的空间。我个人是两块固态&#xff0c;一块m.2&#xff0c;一块sata&#xff1b;所以我直接将500g…