问题
做了一个剖析数据生成图片的小工具,隔一段时间就会截图失败,因为chrome自动更新的版本,工具中的chromedirver与之曾经不匹配了。

解决
因为使用者不是一个人且非专业人士,手动解决不可取,自动更新比拟靠谱,思路很简略:
1、查问以后chrome版本
2、查问以后chromedriver版本
3、比拟两者是否统一,不统一则更新chromedirver驱动

代码
与更新性能相干的包(从一堆代码中摘取进去的,可能有漏的,缺哪个本人装置就好)

import osfrom init.Logger import log import re  # 正则import winreg  # windows注册表import zipfile  # 压缩解压import requests
  #下载chromedirver的镜像地址base_url = 'http://npm.taobao.org/mirrors/chromedriver/'# 匹配前3位版本号的正则表达式version_re = re.compile(r'^[1-9]\d*\.\d*.\d*') # 通过注册表查问chrome版本def getChromeVersion():  try:    key = winreg.OpenKey(winreg.HKEY_CURRENT_USER, 'Software\\Google\\Chrome\\BLBeacon')    value, t = winreg.QueryValueEx(key, 'version')    return version_re.findall(value)[0]  # 返回前3位版本号  except WindowsError as e:    # 没有装置chrome浏览器    return "1.1.1" # 查问Chromedriver版本def getChromeDriverVersion():  outstd2 = os.popen('chromedriver --version').read()  try:    version = outstd2.split(' ')[1]    version = ".".join(version.split(".")[:-1])    return version  except Exception as e:    return "0.0.0" # 查看chromedirver用不必更新def checkChromeDriverUpdate():  chrome_version = getChromeVersion()  log.info(f'以后chrome版本: {chrome_version}')  driver_version = getChromeDriverVersion()  log.info(f'以后chromedriver版本: {driver_version}')  if chrome_version == driver_version:    log.info("版本兼容,无需更新.")    return  log.info("chromedriver版本与chrome浏览器不兼容,更新中>>>")  try:    getLatestChromeDriver(chrome_version)    log.info("chromedriver更新胜利!")  except requests.exceptions.Timeout:    log.info("chromedriver下载失败,请查看网络后重试!")  except Exception as e:    log.info(f"chromedriver未知起因更新失败: {e}")  # 获取该chrome版本的最新driver版本号def getLatestChromeDriver(version):  url = f"{base_url}LATEST_RELEASE_{version}"  latest_version = requests.get(url).text  print(f"与以后chrome匹配的最新chromedriver版本为: {latest_version}")  # 下载chromedriver  print("开始下载chromedriver...")  download_url = f"{base_url}{latest_version}/chromedriver_win32.zip"  file = requests.get(download_url)  with open("chromedriver.zip", 'wb') as zip_file:  # 保留文件到脚本所在目录    zip_file.write(file.content)  print("下载实现.")  # 解压  f = zipfile.ZipFile("chromedriver.zip", 'r')  for file in f.namelist():    f.extract(file)  print("解压实现.")

后果:
兼容

不兼容