首页 > 其他分享 >Selenium - 自动下载 webdriver

Selenium - 自动下载 webdriver

时间:2023-10-07 20:00:13浏览次数:32  
标签:webdriver name Selenium driver print path options 下载

背景
很多浏览器会自动更新,但是 driver 不会自动更新。为了确保 driver 版本和浏览器匹配,可以使用第三方库 webdriver_manager
代码
这个文件里封装了几个函数
driver_seek : 根据给定的目录,和文件名称,查找该目录下是否有这个文件
driver_download : 下载 webdriver 到指定目录,如果path参数不指定,会下载到 C:\Users\当前用户名 目录下,如果指定path,就下载到指定目录 —— 我因为有多个使用Selenium 的爬虫项目,所以会把 driver 下载到1个公用目录下
driver_test : 测试上面这两个函数是否工作正常
# !/usr/bin/env python3
# _*_ coding:utf-8 _*_
"""
@File               : init_webdriver.py
@Project            : Scrapy
@CreateTime         : 2023/1/2 17:02
@Author             : biaobro
@Software           : PyCharm
@Last Modify Time   : 2023/1/2 17:02
@Version            : 1.0
@Description        : None
    @20230207
    # 安装webdriver-manager : pip install webdriver-manager
    # webdriver-manager 在python3.11 下报错无法使用,改用python3.10 后正常
    # 这个文件只需要完成 检测目标是否存在,如果不存在就下载的任务就好了,不需要做额外的设置,应用层的设置交给应用层
    # 如果不写main 函数,被导入时就会自动执行
"""
from selenium import webdriver
 
# chrome, firefox, edge, IE
from webdriver_manager.chrome import ChromeDriverManager
from selenium.webdriver.chrome.service import Service as ChromeService
import os
 
 
# from webdriver_manager.firefox import GeckoDriverManager
# from webdriver_manager.microsoft import EdgeChromiumDriverManager
# from webdriver_manager.microsoft import IEDriverManager
 
 
def driver_seek(folder_name, file_name):
    """根据输入的文件名称查找对应的文件夹有无改文件,有则返回文件路径"""
    for root, dirs, files in os.walk(folder_name):
        if file_name in files:
            # 当层文件内有该文件,输出文件地址
            path = os.path.join(root, file_name)  # r'{0}\{1}'.format(root, file_name)
            print(path)
            print('the driver has already been there. you could load it freely.')
            return path
    print(file_name + " doesn't exist in " + folder_name + ', please download it firstly.')
    return None
 
 
def driver_download(path=None):
    try:
        # 默认 webdriver 会被下载到  .home/.wdm folder
        # 本机 [C:\Users\biaob\.wdm\drivers\chromedriver\win32\97.0.4692.71\chromedriver.exe]
 
        # silent logs and remove them from console
        # os.environ['WDM_LOG_LEVEL'] = '0'
 
        # disable the blank space in first line
        # os.environ['WDM_PRINT_FIRST_LINE'] = 'False'
 
        # 如果没有指定path参数,就下载到项目路径
        # 如果指定,就下载到指定路径
        if path is None:
            # By default, all driver binaries are saved to user.home/.wdm folder.
            # You can override this setting and save binaries to project.root/.wdm.
            # 设置 'WDM_LOCAL' = '1' 修改设置,下载文件到项目路径
            os.environ['WDM_LOCAL'] = '1'
 
            # 下载地址:https://chromedriver.chromium.org/downloads
            # 老式写法
            # browser = webdriver.Chrome(executable_path=ChromeDriverManager().install())  # , options=options)
 
            # 新式写法
            print("driver will be downloaded into default project folder.")
            ChromeService(ChromeDriverManager().install())
        else:
            # Set the directory where you want to download and save the webdriver.
            # You can use relative and absolute paths.
            print("driver will be downloaded into specified folder.")
            path = ChromeDriverManager().install()
            print(path)
        return True
    except Exception as e:
        print(e)
        return False
 
 
def driver_test(path, url="https://www.baidu.com"):
    driver_path = driver_init()
    # option set to avoid 'data' show in address bar
    options = webdriver.ChromeOptions()
    # options.add_argument('--no-sandbox')
    # options.add_argument('--disable-dev-shm-usage')
    # options.add_argument(r"user-data-dir=data")
    # options.add_argument(r"headless")
    browser = webdriver.Chrome(service=ChromeService(path), options=options)
    browser.get(url)
    if browser.title == "百度一下,你就知道":
        print("selenium browser headless mode visit Baidu test passed.")
    elif browser.title is not None:
        print(f"selenium browser headless mode visit {url} test passed.")
    else:
        print("selenium browser headless mode test failed!")
    # quit 必须要有,否则停留后台,需要在任务管理器中手动关闭
    browser.quit()
 
 
# specify the path directly
# 指定本地目录
# driver = webdriver.Chrome('D:\Download\chromedriver_win32\chromedriver.exe')
 
# 用法示例
def driver_init():
    parent_directory = r'..\\'
    file_name = r'chromedriver.exe'
 
    driver_path = driver_seek(parent_directory, file_name)
 
    if driver_path is not None:
        return driver_path
    else:
        driver_download(parent_directory)
        return driver_seek(parent_directory, file_name)
运行效果

 

 

标签:webdriver,name,Selenium,driver,print,path,options,下载
From: https://www.cnblogs.com/panlifeng/p/17747333.html

相关文章

  • 大文件上传和下载解决方案
    前言前端处理“大”一直是一个痛点和难点,比如大文件、大数据量。虽然浏览器硬件有限,但是聪明的工程师总是能够最大化利用浏览器的能力和特性,优雅的解决一个个极端问题,满足用户的多样化需求。断点上传对于大文件,如果我们直接上传,用户网速够慢的话,可能需要等上几天几夜才能上传完......
  • golang实现一个简单的文件浏览下载功能代码示例
    想省事用Claude(一个依托chatgpt的AI)生成一段golang的文件浏览下载示例,结果给生成的代码大概是这样的(省去了无关部分,主要部分如下):http.HandleFunc("/*",downloadFile)http.HandleFunc("/",showFileList)测试之后,结果发现每次都会走到“/”下去,无论如何都不会......
  • lumion中文官网-lumion软件中文版下载 安装包下载方式
    性能特点1、尽量最好地揭示您的修建愿景:种类操控键位是Lumion11的堆积性能。只需按下它,选择一种种类。您会立即获得一个均衡了光线、深入度和实际感的诱人图象。新的天空光日光摹拟器和柔和精美暗影加强。翻开它们,看着树叶和草变得很是传神。看桌子和书架上面的暗影变得奥妙而柔和......
  • lumion中文官网-lumion软件中文版下载 安装包下载方式
    性能特点1、尽量最好地揭示您的修建愿景:种类操控键位是Lumion11的堆积性能。只需按下它,选择一种种类。您会立即获得一个均衡了光线、深入度和实际感的诱人图象。新的天空光日光摹拟器和柔和精美暗影加强。翻开它们,看着树叶和草变得很是传神。看桌子和书架上面的暗影变得奥妙而柔和......
  • Lumion中文版下载-Lumion(含补丁)下载 安装包下载方式
    Lumion12.0是一个实时的3D可视化工具,用来制作电影和静帧作品,涉及到的领域包括建筑、规划和设计。它也可以传递现场演示。Lumion的强大就在于它能够提供优秀的图像,并将快速和高效工作流程结合在了一起,为你节省时间、精力和金钱。人们能够直接在自己的电脑上创建虚拟现实。通过渲染......
  • Navisworks Manage 2022 软件下载 安装包下
    AutodeskNavisworksManage是一款专门为建筑类工人设计的3d建模服务的软件,是建筑类领先的软件。AutodeskNavisworksManage可以进行冲突检测、高级协作。而且新版本AutodeskNavisworksManage进行了优化调整,鞥家了更多新功能。软件地址:看置顶贴AutodeskNavisworksManage2020......
  • 安装包Matlab-中文科学编程软件-安装包下载方式
    Matlab应用是从外网软件论坛中引进的一款优质数据分析平台,该应用的UI布局设计参考了主流的办公应用,主体是由MATLAB和Simulink组成,内置了多达六百余种的函数运算模式,适合于每天需要处理大规模数据计算的行业,像仿真建模、系统算法的研发以及复杂的工程结构作图等,相信会是满意的选择。......
  • matlab下载-matlab软件官方版下载「编程开发」安装包下载方式
    matlab最新版本是一款非常不错的数学计算软件,这款软件非常的给力有着很强悍的算法以及模型创建能力,此版本更新了很多新的功能,能让你的办公使用更加强悍,快来下载试试吧。软件地址:看置顶贴Matlab2020b软件特色1、Matlab2020b提供用于科学计算及工程设计的高级语言。2、Matlab2020b可......
  • PhpStudy下载安装使用教程
    PhpStudy一、官网下载二、安装三、简单使用 PhpStudy:让天下没有难配的服务器环境。学习网络安全经常需要搭建各种各样的Web环境,而PphStudy(简称“小皮”)可以一键搭建环境,节省下载、配置环境的时间。一、官网下载1)访问PhpStudy官网:https://www.xp.cn/2)【首页】选择W......
  • 如何避免数据库被别人下载?
    有许多方法可以避免access数据库被下载,下面介绍几种1、将数据库改后缀名,改成asp文件形式,或者改为global.asa2、将数据库名字复杂命名,比如命名为kjfkefijkje3.mdb3、最放心的方法是将数据库放置在FTP中的database目录下,这样别人就无法下载了......