赞
踩
问题:google浏览器频繁更新自动升级、同事使用的Google浏览器版本不一致,需要手动去下载驱动,非常的无语。本着碰到问题就解决问题的心态,写一个自动下载驱动的方法,后来发现了一个驱动管理包非常实用,分享给大家。
当前方法只适配了Windows上的驱动,其它系统和浏览器可以自己修改配置信息适配一下。废话不多说直接上代码。
python -m pip install -i https://mirrors.aliyun.com/pypi/simple webdriver-manager==4.0.1
# coding:utf-8 import json import os import re # python -m pip install -i https://mirrors.aliyun.com/pypi/simple webdriver-manager==4.0.1 from webdriver_manager.chrome import ChromeDriverManager from webdriver_manager.firefox import GeckoDriverManager from webdriver_manager.microsoft import EdgeChromiumDriverManager def get_driver_path(driver_name: str = 'chromedriver') -> str: """ 获取驱动路径,如果没有、版本与安装的浏览器版本不一致则自动更新下载,有的话获取缓存的驱动 :param driver_name: 浏览器名称,值如下: chromedriver 谷歌驱动 edgedriver edge 驱动 geckodriver 火狐驱动 :return: 浏览器驱动路径 """ driver_names = { 'chromedriver': { 'query': r'reg query "HKEY_CURRENT_USER\Software\Google\Chrome\BLBeacon" /v version', 'class': ChromeDriverManager, }, 'edgedriver': { 'query': r'reg query "HKEY_CURRENT_USER\Software\Microsoft\Edge\BLBeacon" /v version', 'class': EdgeChromiumDriverManager, }, 'geckodriver': { 'query': r'reg query "HKEY_LOCAL_MACHINE\SOFTWARE\mozilla.org\Mozilla" /v CurrentVersion', 'class': GeckoDriverManager, }, } if driver_name in driver_names: local_verinfo = os.popen(driver_names[driver_name]['query']).read().strip() browser_verinfo = re.compile(r' ([0-9]+)\.[0-9]+').findall(local_verinfo) if len(browser_verinfo) < 1: print(f'获取本地 {driver_name} 浏览器版本失败:{local_verinfo}') # 获取本地浏览器驱动缓存路径 drivers_path = os.path.join(os.path.expanduser("~"), '.wdm/drivers.json') ver_path = '' if os.path.isfile(drivers_path): with open(drivers_path, 'r') as file: data = json.load(file) for i in [k for k in data]: cache_ver = re.compile(driver_name + r'.*_for_([0-9]+)\.').findall(i) if len(cache_ver) == len(browser_verinfo) == 1 and cache_ver[0] == browser_verinfo[0]: ver_path = data[i]['binary_path'] return driver_names[driver_name]['class']().install() if ver_path == '' else ver_path else: raise ValueError(f'{driver_name} 驱动暂不支持')
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。