如何使用ChromeDriverManager 来管理ChromeDriver

前言

使用ChromeDriverManager 来管理ChromeDriver可以简化chromedriver的管理,降低测试维护成本。这篇文章详细介绍利用ChromeDriverManager自动下载和配置chromedriver的方法:

一、背景

在使用Selenium with Chrome进行浏览器自动化测试时,需要配置chromedriver。因为chromedriver是连接Selenium和Chrome浏览器的桥梁。
但是chromedriver需要与本地Chrome浏览器版本匹配,不同操作系统对应的chromedriver版本也不同。这给测试带来一定的麻烦。如果每次Chrome浏览器更新,都需要手动下载新的chromedriver替换,同时考虑操作系统版本,将非常麻烦。

二、ChromeDriverManager的作用

ChromeDriverManager可以自动下载和管理chromedriver。它可以:

  • 根据本地Chrome浏览器版本自动下载匹配的chromedriver
  • 自动判断操作系统版本,下载对应版本的chromedriver
  • 设置chromedriver的下载目录,方便管理
    这样就无需关心chromedriver的版本和路径,可以降低测试维护的成本。

三、ChromeDriverManager的使用方法

  1. 安装webdriver_manager模块
pip install webdriver_manager
  1. 导入ChromeDriverManager和webdriver模块
from selenium import webdriver
from webdriver_manager.chrome import ChromeDriverManager
  1. 创建ChromeDriverManager对象,指定下载路径(可选)
manager = ChromeDriverManager(path="./drivers")
  1. 调用install()方法下载匹配版本的chromedriver
driver_path = manager.install()
  1. 创建Service对象,传入chromedriver路径
service = Service(driver_path)
  1. 创建ChromeDriver,传入service参数
driver = webdriver.Chrome(service=service)

这样就可以通过简单的代码自动下载和配置chromedriver,非常方便。

四、主要优点

  • 自动管理chromedriver,使代码简洁,无需指定chromedriver路径
  • 随Chrome浏览器更新自动获取对应版本的chromedriver
  • 自动判断操作系统版本,下载正确的chromedriver
  • 可以设置chromedriver下载目录,不会污染项目目录
  • 提高代码可移植性,可轻松运行在不同机器上

五、完整示例

下面是一个使用ChromeDriverManager的完整示例:

from selenium import webdriver
from selenium.webdriver.chrome.service import Service  # 导入Service类
import os

from selenium.webdriver.common.by import By
from webdriver_manager.chrome import ChromeDriverManager
import time

current_dir = os.path.dirname(os.path.abspath(__file__))
# 获取当前文件所在目录的绝对路径

driver_path = os.path.join(current_dir, 'drivers')
# 设置驱动下载目录为当前目录下的drivers文件夹
os.makedirs(driver_path, exist_ok=True)
# 创建目录 如果存在则跳过创建

manager = ChromeDriverManager(path=driver_path)
# 设置驱动下载管理器下载路径
chromedriver_path = manager.install()
# 下载匹配本地Chrome版本的驱动

# 创建驱动服务对象,传入下载的驱动执行路径
service = Service(chromedriver_path)

# 创建Chrome浏览器驱动时,传入驱动服务对象
# 该服务包含了驱动的路径,版本等信息
driver = webdriver.Chrome(service=service)

# 后续正常编写自动化测试代码...
# 简单的测试用例
driver.get("https://www.baidu.com")
driver.find_element("kw").send_keys("selenium")
driver.find_element("su").click()
time.sleep(2)

# 打印页面标题做校验
print(driver.title)

driver.quit()

这段代码是使用Python的selenium模块进行网页自动化测试的示例:

  1. 从selenium导入webdriver和Service类。Service类用于配置chromedriver的执行路径。
  2. 从selenium.webdriver.common.by导入By类,用于定位元素。
  3. 导入ChromeDriverManager,用于自动下载匹配Chrome版本的chromedriver。
  4. 获取当前文件所在目录,并在该目录下创建drivers文件夹,用于存放chromedriver。
  5. 创建ChromeDriverManager实例,指定chromedriver下载路径为drivers文件夹。
  6. 调用ChromeDriverManager的install()方法下载匹配版本chromedriver。
  7. 创建Service实例,传入下载的chromedriver路径。
  8. 创建ChromeDriver实例,传入Service实例。这样可以指定chromedriver的路径。
  9. 进行简单的测试 - 打开百度网页,输入搜索词,点击搜索按钮。
  10. 打印出页面title做校验。
  11. 最后关闭浏览器。

六、总结

ChromeDriverManager可以自动下载和配置chromedriver,大大简化了chromedriver的管理,降低了测试的维护成本。非常值得在自动化测试中使用。

2023-08-31
最近chrome自动更新了116版本,chromedriver仍停留在114版本,以上代码会在当前目录自动下载最新版本chromedriver,只有当二者同步更新时可以正常使用

新文已发,完美解决二者未同步更新时产生的问题
自动化管理chromedriver-完美解决版本不匹配问题

你可能感兴趣的:(爬虫,python,python,chrome,selenium)