用python脚本完成chromedriver的版本自动升级

当Chrome浏览器升级导致chromedriver版本不匹配时,可通过Python脚本自动安装chromedriver的最新版本,解决运行错误。注意运行脚本前,确保修改chromedriver存放文件夹的权限为读写。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

很多时候chrome浏览器会自动升级,

chromedriver的版本号与chrome浏览器版本不匹配时在运行程序时就会报错

用下面的脚本可以自动安装chromedriver的最新版本到指定路径

from webdriver_manager.utils import get_browser_version_from_os
from webdriver_manager.chrome import ChromeDriverManager
import requests
import re
import time
import os
import shutil

browserVersion = get_browser_version_from_os("google-chrome") # 获取当前系统chrome浏览器的版本号
print(f'Chrome version is {browserVersion}')
mainBrowserVersion = browserVersion.split(".")[0] # 获取chrome浏览器的主版本号
resp = requests.get(url="https://chromedriver.storage.googleapis.com/")
content = resp.text
availableVersionList = re.search(f"<Contents><Key>({mainBrowserVersion}\.\d+\.\d+\.\d+)/chromedriver_mac64\.zip</Key>.*?", content, re.S)
print(f'Available chromedriver version is {availableVersionList}')

if availableVersionList == None:
    print(f"镜像网站上没有找到主版本号为{m
### 如何用 Python 实现 Chromedriver自动更新 为了使 Python 脚本自动更新 ChromeDriver 并保持其与当前安装的 Google Chrome 浏览器版本一致,可以利用 `webdriver-manager` 库或其他自定义逻辑来完成这一目标。以下是详细的解决方案: #### 使用 `webdriver-manager` 自动管理 ChromeDriver 版本 `webdriver-manager` 是一个非常方便的第三方库,可以通过 pip 安装并快速集成到项目中[^1]。 ```bash pip install webdriver-manager ``` 在代码中引入此库后,可以直接调用 `ChromeDriverManager().install()` 方法获取最新兼容的 ChromeDriver 可执行文件路径。例如: ```python from selenium import webdriver from webdriver_manager.chrome import ChromeDriverManager driver = webdriver.Chrome(executable_path=ChromeDriverManager().install()) ``` 上述代码会自动检测本地已有的 ChromeDriver 是否匹配当前系统的 Chrome 浏览器版本。如果不匹配,则会从官方源下载最新的适配版本。 --- #### 解决高版本号后的驱动缺失问题 然而,在某些情况下(如 Chrome 114 或更高版本),可能发现默认的 `ChromeDriverManager().install()` 方法无法正常工作,因为对应版本的驱动尚未被维护者及时更新至官方存储库[^2]。此时可采取以下措施解决: ##### 手动指定镜像源 通过设置环境变量或者直接修改请求 URL 来切换到其他可用的镜像站点,比如国内常用的淘宝镜像仓库[^3]: ```python import os from selenium import webdriver from webdriver_manager.chrome import ChromeDriverManager from webdriver_manager.utils import ChromeType os.environ['WDM_LOG_LEVEL'] = '0' # 关闭日志输出 os.environ['WDM_LOCAL'] = '1' # 启用本地缓存模式 # 设置镜像地址 (替换为实际有效的URL) mirror_url = "https://npm.taobao.org/mirrors/chromedriver/" driver = webdriver.Chrome( executable_path=ChromeDriverManager(chrome_type=ChromeType.GOOGLE, cache_valid_range=7).install(), options=None, ) print(f"成功加载 ChromeDriver: {driver.capabilities}") ``` 注意:由于部分资源可能会因政策原因而不可访问,请确保所选镜像是合法且可靠的。 --- #### 编写独立脚本定期检查更新状态 除了依赖于外部工具外,还可以编写一段专门用于监控和升级 ChromeDriver 的辅助函数。下面是一个简单示例: ```python import requests import subprocess import re def get_latest_chrome_version(): """ 获取当前系统上安装的 Chrome 主版本号 """ try: result = subprocess.run(['google-chrome', '--version'], stdout=subprocess.PIPE, stderr=subprocess.DEVNULL) version_str = result.stdout.decode('utf-8').strip() match = re.search(r'\d+\.\d+', version_str) if match: return int(match.group(0).split('.')[0]) except Exception as e: pass raise RuntimeError("未能找到合适的 Chrome 浏览器版本") def download_and_install_driver(version): """ 下载特定版本ChromeDriver""" base_url = f"https://chromedriver.storage.googleapis.com/LATEST_RELEASE_{version}" response = requests.get(base_url) if not response.ok or not response.text.strip(): raise ValueError(f"No driver found for chrome v{version}") latest_release = response.text.strip() url = f'https://chromedriver.storage.googleapis.com/{latest_release}/chromedriver_linux64.zip' local_filename = "/tmp/chromedriver.zip" with open(local_filename, 'wb') as file_handle: r = requests.get(url, stream=True) total_length = int(r.headers.get('content-length')) if total_length is None: # no content length header file_handle.write(r.content) else: dl = 0 for data in r.iter_content(chunk_size=4096): dl += len(data) file_handle.write(data) if __name__ == "__main__": current_browser_ver = get_latest_chrome_version() print(f"Detected installed browser major version: {current_browser_ver}") download_and_install_driver(current_browser_ver) ``` 以上脚本适用于 Linux 系统下的场景;对于 Windows 和 macOS 用户而言,需相应调整命令行参数以及解压方式等内容[^5]。 --- #### 总结 无论是采用成熟的第三方模块还是自行构建专属流程,均能达成自动化部署的目的。推荐优先尝试前者以减少额外的工作量,除非遇到特殊需求才考虑后者方案。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值