# 前言
在使用Selenium自动化操作Microsoft Edge浏览器时,「**版本不匹配**」或者「**浏览器进程已存在**」是最常见的报错之一。本文以实际场景为例,详细拆解两个可能的报错原因,并提供「**手动适配驱动**」和「**自动管理驱动**」两种解决方案,帮你彻底解决这类问题。 正常来说这样的报错界面会显示如下:

# 一、问题背景:报错现象与根源
## 1. 报错信息还原
运行Selenium自动化脚本时,出现如下核心报错:
程序执行异常:Message: session not created: This version of Microsoft Edge WebDriver only supports Microsoft Edge version 141
Current browser version is 143.0.3650.75 with binary path C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe
## 2. 两个报错根源分析
### 原因一:已存在浏览器进程
在运行程序的时候,电脑本身已经开着Edge浏览器或者别的浏览器(或者有可能关闭界面但是进程并没有完全清理干净)
### 原因二:驱动与Edge版本不一致(高概率)
Selenium的核心规则:**Edge WebDriver(msedgedriver.exe)版本必须与本地Edge浏览器版本完全一致(主版本号需严格匹配)**。
- 本地Edge浏览器版本:143.0.3650.75(主版本号143);
- 已安装的EdgeDriver版本:仅支持141版本;
- 版本不匹配导致浏览器与驱动无法建立会话,最终触发报错。
**补充:Edge浏览器会自动更新,而手动下载的驱动不会同步更新,这是版本不匹配的主要诱因。**
# 二、解决方案(分两种原因分别解决,建议都试试)
## 原因一 解决方案
**在任务管理器中彻底关闭浏览器进程**
**1、打开任务管理器**

**2、寻找浏览器相关的进程 并全部右键之后点击关闭(所有浏览器)**

**3、重新运行程序,可以多试几遍,如果是这个原因的话这样就可以解决**
## 原因二 解决方案:
### 方案一:手动下载匹配版本的EdgeDriver
**适合场景:1、快速解决问题 2、需精准控制驱动版本、无网络自动下载权限的环境。**
**步骤1:确认本地Edge浏览器完整版本**
**1. 打开Edge浏览器,点击右上角「···」(设置);**

**2. 在界面中点击「关于Microsoft Edge」;**

**3. 记录完整版本号(示例:143.0.3650.75,核心关注「143」主版本号)。**

**步骤2:下载对应版本的EdgeDriver**
1. 访问EdgeDriver官方下载地址:[https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/](https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/);
2. 找到与浏览器主版本匹配的驱动(如「143.x.x.x」系列);

**3. 根据系统类型选择(博主的电脑为Windows 64位),下载压缩包;**

**5. 解压压缩包,得到`msedgedriver.exe`可执行文件**。

**步骤3:替换旧驱动并验证**
**1. 找到脚本中指定的驱动路径(示例:`E:\edge\msedgedriver.exe`);**

**2. 将新下载的`msedgedriver.exe`替换该路径下的旧文件;**

**3. 重新运行自动化脚本,版本匹配后报错消失。**
### 三、解决方案二:用webdriver-manager自动管理驱动(推荐)
适合场景:追求效率、需长期维护的自动化脚本(无需手动适配版本)。
`webdriver-manager`是Python第三方库,可自动检测本地浏览器版本,下载匹配的驱动,彻底解决版本不匹配问题。
**步骤1:安装依赖库**
打开命令行(CMD/PowerShell),执行安装命令:
```bash
pip install webdriver-manager

步骤2:修改自动化脚本(核心) 替换原有的浏览器初始化代码,新增自动驱动管理逻辑:**
原错误代码(手动指定驱动路径)
from selenium import webdriver
from selenium.webdriver.edge.service import Service
from selenium.webdriver.edge.options import Options
# 手动指定驱动路径(易导致版本不匹配)
DRIVER_PATH = r"E:\edge\msedgedriver.exe"
EDGE_PATH = "C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
def init_browser(headless=True):
edge_options = Options()
edge_options.binary_location = EDGE_PATH
# 其他浏览器配置...
# 手动加载驱动(版本不匹配根源)
service = Service(DRIVER_PATH)
driver = webdriver.Edge(service=service, options=edge_options)
return driver
修改后代码(自动匹配驱动)
from selenium import webdriver
from selenium.webdriver.edge.service import Service
from selenium.webdriver.edge.options import Options
# 新增:导入Edge驱动自动管理模块
from webdriver_manager.microsoft import EdgeChromiumDriverManager
EDGE_PATH = "C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe"
def init_browser(headless=True):
"""初始化Edge浏览器(自动匹配驱动版本)"""
# 1. 配置浏览器选项
edge_options = Options()
edge_options.binary_location = EDGE_PATH
edge_options.add_argument("--start-maximized") # 最大化窗口
edge_options.add_argument("--disable-gpu") # 禁用GPU加速
edge_options.add_argument("--no-sandbox") # 禁用沙箱模式
# 反爬配置:隐藏自动化特征
edge_options.add_argument("--disable-blink-features=AutomationControlled")
edge_options.add_experimental_option("excludeSwitches", ["enable-automation"])
edge_options.add_experimental_option('useAutomationExtension', False)
# 无头模式(生产环境可用,调试时设为False)
if headless:
edge_options.add_argument("--headless=new")
# 2. 核心修改:自动下载并加载匹配版本的驱动
service = Service(EdgeChromiumDriverManager().install())
driver = webdriver.Edge(service=service, options=edge_options)
# 额外:隐藏webdriver标识,避免被网站检测
driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")
return driver
步骤3:删除手动驱动路径配置
删除脚本中手动指定的DRIVER_PATH变量(无需再维护驱动路径),重新运行脚本即可。
关键说明
- 首次运行时,
webdriver-manager会自动检测本地Edge版本,下载匹配的驱动到系统临时目录; - 后续Edge浏览器自动更新后,再次运行脚本会自动下载新的匹配驱动,无需手动干预。
四、避坑指南:常见问题补充
- 驱动下载失败:检查网络是否通畅,若访问官方源慢,可配置国内镜像(需修改
webdriver-manager源码或使用代理); - 用户数据目录报错:若脚本中配置了
user-data-dir,需确保该路径存在且有读写权限,建议调试时暂时注释该配置; - 无头模式异常:Edge 115+版本推荐使用
--headless=new(旧版--headless已废弃); - 权限问题:驱动下载路径若在C盘,需以管理员身份运行命令行/VS Code。
```