為什么需要自動下載瀏覽器驅動?

為什么需要自動下載瀏覽器驅動?

血淚場景重現

  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…