我在使用 python 的自动化测试工具时需要使用到 chromedriver,查询得知需要匹配当前下载的 chrome 的版本号,无奈发现 chrome 自动更新到了最新版本,网络上并不能检索到当前版本号的 chromedriver,遂查询 AI 得到以下解决方案:
在此之前确保你的 python 解释器正确下载并配置到了环境变量中
终端输入:
pip install webdriver-manager
如果你之前手动下载了不匹配的驱动,尝试自己的测试代码后仍然报错,极有可能是之前的驱动还存在的问题,不用担心,按照下图尝试更新 webdriver-manager,并手动删除缓存的驱动程序:
两行代码:(windows用户不需要运行第二行,进你的下载目录删掉你下的那个就行)
pip install --upgrade webdriver-manager
rm -rf ~/.wdm
下载好驱动管理器这个库后,后续你的代码都将由此管理器来管理,不需要手动配置环境变量或是在代码中配置驱动路径,一切都由webdriver-manager管理。
同时,由于使用了管理器,相应的代码中需要做出变更,具体可以查询相关文档,也可以参考我的测试代码:
import time
import re
from selenium import webdriver
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.common.by import By
from selenium.webdriver.common.keys import Keys
from selenium.webdriver.chrome.options import Options
from webdriver_manager.chrome import ChromeDriverManager
# 配置 Chrome 选项
chrome_options = Options()
#chrome_options.add_argument("--headless") # 如果不想显示浏览器窗口,可以启用此选项
chrome_options.add_argument("--no-sandbox")
chrome_options.add_argument("--disable-dev-shm-usage")
# 获取 ChromeDriver 的路径并输出版本号
driver_path = ChromeDriverManager().install()
print(f"使用的 ChromeDriver 路径: {driver_path}")
# 使用正则表达式提取路径中的版本号
version_match = re.search(r'(\d+\.\d+\.\d+\.\d+)', driver_path)
if version_match:
version_info = version_match.group(1)
print(f"自动下载的 ChromeDriver 版本号: {version_info}")
else:
print("无法提取 ChromeDriver 版本号")
# 初始化 ChromeDriver
driver = webdriver.Chrome(service=Service(driver_path), options=chrome_options)
try:
print("正在打开 Google...")
driver.get('https://www.google.com')
print("找到搜索框...")
search_box = driver.find_element(By.NAME, 'q')
search_box.send_keys('www.baidu.com')
search_box.send_keys(Keys.RETURN)
print("等待搜索结果...")
driver.implicitly_wait(10) # 设置全局隐形等待时间,单位秒
# 打印当前页面标题
print("当前页面标题:", driver.title)
time.sleep(5) # 设置短择等待时间,实际为休眠方法,单位秒
finally:
# 关闭浏览器
driver.quit()
print("浏览器已关闭")
运行后会反馈给你相应下载的驱动版本号:
注:本文章不只面向 Mac 用户,对windows、linux用户也有参考意义,因为此驱动管理器基于python,属python库,对其他操作系统用户依然可用。