ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

python selenium 自动更新浏览器驱动文件

2022-06-16 15:02:22  阅读:246  来源: 互联网

标签:Files Chrome python list selenium chromedriver chrome version 自动更新


说明
实现原理是当使用的chromedriver.exe与当前Chrome浏览器版本不一致时会抛出异常,

在异常信息中会包含当前Chrome版本信息和Chrome浏览器安装地址信息,通过捕获异常信息,

正则匹配就可以过滤出Chrome版本号,然后再去官方动态下载对应版本的驱动并解压就可以了

前提是需要内置一个chromedriver.exe,不然抛出的是其他异常信息就获取不到版本号了

经过修改,即使当前版本的驱动没有更新也不会报错而是选择最新的驱动进行下载。

请自己替换文件路径

 

def get_browser():
    # 不加载图片和css
    chrome_options = webdriver.ChromeOptions()
    # 不显示浏览器窗口
    chrome_options.add_argument('headless')
    prefs = {"profile.managed_default_content_settings.images": 2, 'permissions.default.stylesheet': 2}
    chrome_options.add_experimental_option("prefs", prefs)
    try:
        driverobject = Service(r"D:\Program Files\chromedriver.exe")
        driver_ = Chrome(service=driverobject, options=chrome_options)
        driver_.get("http://baidu.com")
        return driver_
    # 驱动不匹配时自动更新
    except Exception as msg:
        print("浏览器驱动不匹配正在更新...")
        reg = "Current browser version is.+with"
        chrome_version = re.search(reg, str(msg)).group().replace("Current browser version is ", "").replace(" with", "")
        print("Chrome Version:" + chrome_version)
        chrome_version_list = chrome_version.split(".")
        str_ = '.'
        del chrome_version_list[3]
        re_ = str_.join(chrome_version_list) + ".\d{2}"
        r = requests.get("http://chromedriver.storage.googleapis.com")
        chrome_version_list_2 = list(set(re.findall(re_, r.text)))
        chrome_version_list_2.sort()
        chrome_version = chrome_version_list_2[len(chrome_version_list_2) - 1]
        url = 'http://chromedriver.storage.googleapis.com/' + chrome_version + '/chromedriver_win32.zip'
        path = r"D:\Program Files\chromedriver_win32.zip"
        wget.download(url, path)
        with zipfile.ZipFile(r"D:\Program Files\chromedriver_win32.zip") as zf:
            zf.extractall(r"D:\Program Files")
        os.remove(r"D:\Program Files\chromedriver_win32.zip")
        driver_ = get_browser()

    return driver_

 

标签:Files,Chrome,python,list,selenium,chromedriver,chrome,version,自动更新
来源: https://www.cnblogs.com/guohui-chen/p/16381951.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有