欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 财经 > 创投人物 > ChromeDriverManager的具体用法

ChromeDriverManager的具体用法

2025/5/9 0:54:26 来源:https://blog.csdn.net/m0_60008263/article/details/147770430  浏览:    关键词: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 默认会缓存下载的驱动,并在新版本发布时更新。对于调试和开发,可以通过环境变量控制日志输出和缓存政策。

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词