zoukankan      html  css  js  c++  java
  • Python:自动更新Chrome WebDriver

    一段时间没有使用Chrome webdriver后,由于Chrome浏览器升级导致原有的chromedriver已经过期,所以决定写个小程序来实现自动去更新Chrome webdriver,这样就无后顾之忧了。

    思路:

    1. 获取Chrome浏览器的版本信息
    2. 获取Chrome webdriver的版本信息
    3. 对比Chrome浏览器版本信息和webdriver版本信息是否一样
      1. 如果一样则无需更新
      2. 不一样则去网上下载对应的webdriver放到python安装路径下

    由于google网址无法访问,这边使用的是淘宝提供的镜像网址:

    代码如下:

    import os
    import re
    import sys
    import winreg
    import zipfile
    from pathlib import Path
    import requests
    
    python_root = Path(sys.executable).parent  # python安装目录
    base_url = 'http://npm.taobao.org/mirrors/chromedriver/'  # chromedriver在国内的镜像网站
    version_re = re.compile(r'^[1-9]d*.d*.d*')  # 匹配前3位版本信息
    
    
    def get_chrome_version():
        """通过注册表查询Chrome版本信息: HKEY_CURRENT_USERSOFTWAREGoogleChromeBLBeacon: version"""
        try:
            key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, 'SOFTWAREGoogleChromeBLBeacon')
            value = winreg.QueryValueEx(key, 'version')[0]
            return version_re.findall(value)[0]
        except WindowsError as e:
            return '0.0.0'  # 没有安装Chrome浏览器
    
    
    def get_chrome_driver_version():
        try:
            result = os.popen('chromedriver --version').read()
            version = result.split(' ')[1]
            return '.'.join(version.split('.')[:-1])
        except Exception as e:
            return '0.0.0'  # 没有安装ChromeDriver
    
    
    def get_latest_chrome_driver(chrome_version):
        url = f'{base_url}LATEST_RELEASE_{chrome_version}'
        latest_version = requests.get(url).text
        download_url = f'{base_url}{latest_version}/chromedriver_win32.zip'
        # 下载chromedriver zip文件
        response = requests.get(download_url)
        local_file = python_root / 'chromedriver.zip'
        with open(local_file, 'wb') as zip_file:
            zip_file.write(response.content)
    
        # 解压缩zip文件到python安装目录
        f = zipfile.ZipFile(local_file, 'r')
        for file in f.namelist():
            f.extract(file, python_root)
        f.close()
    
        local_file.unlink()  # 解压缩完成后删除zip文件
    
    
    def check_chrome_driver_update():
        chrome_version = get_chrome_version()
        driver_version = get_chrome_driver_version()
        if chrome_version == driver_version:
            print('No need to update')
        else:
            try:
                get_latest_chrome_driver(chrome_version)
            except Exception as e:
                print(f'Fail to update: {e}')
    
    
    if __name__ == '__main__':
        check_chrome_driver_update()
  • 相关阅读:
    3139:[HNOI2013]比赛
    3143: [Hnoi2013]游走
    目前游戏行业内部主要几款游戏引擎的技术对比
    6.使用AngularJS模板来创建视图
    css选择器(E[att^=”val”]序号选择器)
    5.把作用域实现为数据模型
    4.了解AngularJS模块和依赖注入
    3.创建基本的AngularJS应用
    2.AngularJS MVC
    1.AngularJS初探
  • 原文地址:https://www.cnblogs.com/danvy/p/15125202.html
Copyright © 2011-2022 走看看