You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何用一套Python代码兼容Chrome 114与116版本的Selenium测试?

兼容Chrome 114与116的Python Selenium代码实现

核心结论

可以用一套Python代码同时兼容Chrome 114和116版本,关键是让webdriver-manager适配新旧Chrome版本的驱动分发机制,同时配合Selenium 4.11.2的特性。

优化方案

1. 调整依赖版本

将webdriver-manager升级到4.0.1及以上版本(旧版4.0.0对Chrome 116+的新分发机制支持不完善),保持selenium==4.11.2不变。

2. 稳定适配的代码实现

基础自动适配版

利用webdriver-manager的自动版本匹配能力,同时指定官方Chrome类型并启用缓存,提升稳定性:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from webdriver_manager.core.os_manager import ChromeType

def init_chrome_driver():
    # 通用Chrome配置(按需添加)
    options = Options()
    # options.add_argument("--disable-gpu")
    # options.add_argument("--headless=new")  # 无头模式(可选)
    
    # 初始化驱动,适配新旧Chrome版本
    driver = webdriver.Chrome(
        service=Service(
            ChromeDriverManager(
                chrome_type=ChromeType.GOOGLE,  # 明确针对官方Chrome,而非Chromium
                cache_valid_range=7  # 缓存驱动7天,避免重复下载
            ).install()
        ),
        options=options
    )
    return driver

# 使用示例
if __name__ == "__main__":
    driver = init_chrome_driver()
    driver.get("https://example.com")
    print(driver.title)
    driver.quit()

带降级逻辑的增强版

如果自动匹配偶尔失败,添加手动指定主版本的降级逻辑,确保兼容性:

from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.chrome.service import Service
from webdriver_manager.chrome import ChromeDriverManager
from webdriver_manager.core.os_manager import ChromeType
from webdriver_manager.core.utils import ChromeVersion

def get_chrome_main_version():
    # 获取本地Chrome的主版本号(如114、116)
    chrome_version = ChromeVersion().get_browser_version(chrome_type=ChromeType.GOOGLE)
    return chrome_version.split(".")[0]

def init_chrome_driver():
    options = Options()
    chrome_main_ver = get_chrome_main_version()
    
    try:
        # 优先尝试自动匹配
        driver = webdriver.Chrome(
            service=Service(
                ChromeDriverManager(
                    chrome_type=ChromeType.GOOGLE,
                    cache_valid_range=7
                ).install()
            ),
            options=options
        )
    except Exception:
        # 自动匹配失败时,手动指定主版本下载对应驱动
        driver = webdriver.Chrome(
            service=Service(
                ChromeDriverManager(
                    chrome_type=ChromeType.GOOGLE,
                    version=chrome_main_ver,
                    cache_valid_range=7
                ).install()
            ),
            options=options
        )
    return driver

# 使用示例
if __name__ == "__main__":
    driver = init_chrome_driver()
    driver.get("https://example.com")
    print(driver.title)
    driver.quit()

关键注意事项

  • 如果本地安装了多个Chrome版本,需通过options.binary_location指定具体Chrome二进制路径,避免版本识别错误:
    # Windows示例
    options.binary_location = "C:\\Program Files\\Google\\Chrome\\Application\\chrome.exe"
    # macOS示例
    options.binary_location = "/Applications/Google Chrome.app/Contents/MacOS/Google Chrome"
    
  • 确保系统环境变量中Chrome的路径正确,webdriver-manager会自动检测默认安装路径。

内容的提问来源于stack exchange,提问作者A Ahmed

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.11 08:05:33