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

ChromeDriverManager的具体用法

ChromeDriverManagerwebdriver_manager 库的一部分,它用于自动管理 ChromeDriver 的下载和更新。使用 ChromeDriverManager 可以避免手动下载 ChromeDriver 并匹配系统中安装的 Chrome 浏览器版本。以下是 ChromeDriverManager 的基本用法:

步骤

1.安装 webdriver_manager 库:
pip install webdriver-manager
2.导入相关依赖
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from webdriver_manager.chrome import ChromeDriverManager
3.设置options参数(optional)

这边因为博主要做CI/CD 需要进行无头模式的设置所以是必需的

# 设置 Chrome 选项(如果需要)
chrome_options = Options()
chrome_options.add_argument("--headless")  # 无头模式
chrome_options.add_argument("--disable-gpu")
chrome_options.add_argument("--no-sandbox")
4.用chromedrivermanager安装驱动 
# 使用 ChromeDriverManager 处理驱动安装
driver_path = ChromeDriverManager().install()
service = Service(driver_path)

代码解释:

  1. ChromeDriverManager().install():

    • 目标: 自动管理 ChromeDriver 的安装。

    • 功能: ChromeDriverManager()webdriver_manager 包中的一个类,它负责管理 Chrome 浏览器驱动的下载和更新。

    • 方法 install(): 此方法检查系统上是否已经安装了 ChromeDriver,以及它的版本是否与系统上的 Google Chrome 浏览器兼容。如果没有安装或者版本不正确,它会自动下载与当前 Chrome 浏览器版本兼容的 ChromeDriver。

    • 结果: install() 返回下载的 ChromeDriver 的文件路径。这是一个可执行文件的路径,通常是 chromedriver 二进制文件在你的本地机器上的位置。

  2. Service(driver_path):

    • 目标: 启动 Selenium 的 Chrome WebDriver 服务。

    • 功能: Service 是 Selenium 中的一个类,用于代表驱动程序的后台服务。它主要负责启动、终止和管理生命周期中的驱动进程。

    • 参数 driver_path: 这是 ChromeDriver 在本地系统上的路径,由 ChromeDriverManager().install() 返回。将此路径传递给 Service 构造函数来告诉 Selenium 如何找到和使用 ChromeDriver。

    • 使用: 当你创建一个 webdriver.Chrome 实例时,你可以将创建好的 Service 对象作为参数传递,使得 WebDriver 能够启动并与驱动程序正常通信。

整个过程:

  • 通过 ChromeDriverManager().install(),避免手动下载并管理 ChromeDriver 的版本问题。

  • 创建一个 Service 对象来确保在启动 WebDriver 时能够正确地引用和使用 ChromeDriver。

  • 最终用于初始化 WebDriver(例如 webdriver.Chrome(service=service))来启动一个新的浏览器实例。

这种方法简化了驱动安装的管理,确保了驱动程序与浏览器版本的兼容性,同时提高了代码的可维护性和稳定性。无论是在本地开发还是在CI/CD环境中,这种自动化驱动管理的方式都非常有用。

 

5.初始化并执行测试
# 正确的 WebDriver 初始化方式
driver = webdriver.Chrome(service=service)# 使用 WebDriver 做一些事情
driver.get("https://example.com")
print(driver.title)# 关闭浏览器
driver.quit()

基本用法示例

from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager# 使用 ChromeDriverManager 处理驱动安装
driver_path = ChromeDriverManager().install()
service = Service(driver_path)# 正确的 WebDriver 初始化方式
driver = webdriver.Chrome(service=service)# 使用 WebDriver 做一些事情
driver.get("https://stage.me.sap.com/createIssue/0")
print(driver.title)# 关闭浏览器
driver.quit()

注意:

在较新的 Selenium 版本中,webdriver.Chrome 的构造函数不再接受 executable_path 作为参数,而是使用 Service 对象来指定 ChromeDriver 的路径。 如果还用老的方法会出现下面的报错

# 创建 webdriver.Chrome 实例
driver = webdriver.Chrome(executable_path=driver_path)# 使用 WebDriver
driver.get("https://www.example.com")

TypeError: WebDriver.__init__() got an unexpected keyword argument 'executable_path'

拓展(可自行了解

  • 自动下载和更新:

    • ChromeDriverManager().install() 方法会自动下载与系统安装的 Chrome 版本兼容的 ChromeDriver(如果未安装或版本过旧则更新)。
  • 版本控制:

    • 可以指定 ChromeDriver 的版本,比如使用 ChromeDriverManager(version='2.46').install() 来安装特定版本的驱动。
  • 自定义路径:

    • 如果需要把下载的驱动放在特定路径,可以在运行时设置相关的环境变量来管理下载目录:
    import os
    from webdriver_manager.chrome import ChromeDriverManageros.environ['WDM_LOCAL'] = '1'  # 启用本地目录使用
    os.environ['WDM_DIR'] = '/path/to/store/drivers'driver_path = ChromeDriverManager().install()
  • 日志和缓存控制:

    • webdriver_manager 默认会缓存下载的驱动,并在新版本发布时更新。对于调试和开发,可以通过环境变量控制日志输出和缓存政策。

 

http://www.xdnf.cn/news/323191.html

相关文章:

  • uni-app实现完成任务解锁拼图功能
  • 数字康养新范式:七彩喜平台重构智慧养老生态的深度实践
  • 【Python 实战】---- 使用Python批量将 .ncm 格式的音频文件转换为 .mp3 格式
  • 加速项目落地(Trae编辑器)
  • 知识图谱:AI大脑中的“超级地图”如何炼成?
  • MCU缓存架构设计与优化策略
  • 【工具】HandBrake使用指南:功能详解与视频转码
  • IBM BAW(原BPM升级版)使用教程Toolkit介绍
  • MATLAB中去除噪声
  • 安装并运行第一个Spark程序
  • 什么是声明式UI什么是命令式UI?鸿蒙ArkTS为什么是声明式UI-优雅草卓伊凡
  • 如何使用UGUI的EventTrigger
  • IT项目实施方案,软件系统实施方案,信息化项目实施方案,软件文档资料(Word)
  • TextIn ParseX重磅功能更新:支持切换公式输出形式、表格解析优化、新增电子档PDF去印章
  • 如何构建直播美颜SDK?从美颜API调用逻辑到GPU优化实战
  • IEC103 转 ModbusTCP 网关
  • 【STM32F1标准库】理论——通信协议:串口
  • 大数据应用开发和项目实战-电商双11美妆数据分析2
  • 扣子(Coze)的记忆系统详解
  • unity 使用蓝牙通讯(PC版,非安卓)
  • linux 安装ssh server
  • 配电站室智能巡检:机器人 VS 固定摄像头,谁更胜一筹?
  • 聊一聊Qwen3思考模式实现以及背后原理探讨
  • 信息论11:从互信息到最大信息系数——信息论中的非线性关联度量
  • 内网和外网怎么互通?外网访问内网的几种简单方式
  • 在cursor中使用MCP插件生成旅行规划到桌面的执行步骤分析
  • PDF文档压缩攻略
  • Python循环进阶:嵌套与控制的深度解析
  • 详解Redis
  • 第三章—导数和微分错题