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修改文件目录

上一篇:XSS(内含DVWA)


下一篇:C++ | Leetcode C++题解之第446题等差数列划分II-子序列-题解: