当前位置: 首页 > article >正文

python自动更新chromedriver

python自动化过程中,经常遇到脚本跑着跑着,就报错,一看,浏览器自动升级了。
共两张解决方案:
1、禁止浏览器自动升级
2、当脚本运行前先去检测当前的chromedriver与浏览器是否匹配,不匹配,就下载,然后将下载的chromedriver放置到指定位置。
本篇主要是记录方案2的实现,主要依靠webdriver_manager库来实现,代码如下:

import os
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
import shutil

"""
    使用须知:
    1.安装webdriver_manager库
        pip install webdriver_manager -i https://pypi.tuna.tsinghua.edu.cn/simple
"""


def update_chrome_driver(path) -> webdriver:
    """
    :param path: 下载后的chromedriver存放位置
    :return:
    """
    try:
        wb = webdriver.Chrome()
        print("当前已是最新的chromedriver")
        wb.quit()
    except Exception as e:
        print("更新驱动中……")
        driver_path = ChromeDriverManager().install()
        start = driver_path.rindex('/')
        src_path = driver_path[:start + 1]
        print(f"下载的路径:{src_path}")
        copy_dirs(src_path, path)
        print("===========更新驱动完成============")


def copy_dirs(src_path, target_path):
    '''
    :param src_path:
    :param target_path:
    :return:
    '''
    file_count = 0
    source_path = os.path.abspath(src_path)
    target_path = os.path.abspath(target_path)
    if not os.path.exists(target_path):
        os.makedirs(target_path)
    if os.path.exists(source_path):
        for root, dirs, files in os.walk(source_path):
            for file in files:
                src_file = os.path.join(root, file)
                shutil.copy(src_file, target_path)
                file_count += 1
                print(f"=====移动的文件========>{src_file}")
    return int(file_count)


if __name__ == '__main__':
    use_path = "你想要存放chromedriver的路径"
    update_chrome_driver(use_path)

以后每次执行脚本前,执行改文件即可,已经在mac和windows环境下验证过。
还有一点需要注意,use_path的路径是否有写入的权限!
mac电脑可以看一下这篇文章: macOs修改文件目录


http://www.kler.cn/a/325683.html

相关文章:

  • STM32单片机CAN总线汽车线路通断检测-分享
  • Linux的目录结构
  • LLM评测指标与评测方法
  • Elasticsearch集群拒绝请求:索引磁盘使用超限
  • 系统掌握大语言模型提示词 - 从理论到实践
  • Figma中文网:UI设计师的新资源宝库
  • ExpansionPanelList组件的用法
  • 【Android 14源码分析】Activity启动流程-2
  • 大模型使用vLLM推理加速
  • 一篇讲完HTML核心内容
  • 超大规模钢筋计数数据集,共23400组图像,多视角,多角度,多场景,采用voc方式标注 智慧工地资产盘点
  • 【Linux 22】生产者消费者模型
  • 多线程(一):线程的基本特点线程安全问题ThreadRunnable
  • 新买的笔记本电脑如何打开和使用显示卡的问题
  • Windows11系统下Docker环境搭建教程
  • 每天一个数据分析题(四百七十四)- 柱状图
  • golang reflect
  • unity 如何 团队协作避免文件冲突?
  • 企业微信群发系统:精准触达,高效管理的营销新引擎
  • 初识Linux · 地址空间
  • 最新版ChatGPT对话系统源码 Chat Nio系统源码
  • Redis实战--Redis的数据持久化与搭建Redis主从复制模式和搭建Redis的哨兵模式
  • Win10系统使用mstsc远程电脑的时候发现隔一段时间就无法使用剪贴板_rdpclip---Windows运维工作笔记055
  • 第五节-C++类和对象(五):友元机制、内部类与匿名对象
  • Spring MVC 参数校验 总结
  • PyGWalker:让你的Pandas数据可视化更简单,快速创建数据可视化网站