selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge
摘要:Selenium无法自动获取Edge浏览器驱动时,需手动解决版本匹配问题。解决方案包括:1)确认Edge版本;2)下载对应版本驱动;3)将驱动放入Python目录或配置PATH;4)代码中显式指定驱动路径;5)升级Selenium到v4;6)注意虚拟环境和驱动命名。建议使用Service类指定路径,并添加detach选项防止浏览器闪退。
·
Python + Selenium 自动化测试问题
问题:
selenium.common.exceptions.NoSuchDriverException: Message: Unable to obtain driver for MicrosoftEdge using Selenium Manager.
表明:该错误表明Selenium无法通过Selenium Manager自动获取Microsoft Edge浏览器驱动。
问题原因
- 驱动版本不匹配
Edge浏览器驱动(msedgedriver)版本必须与浏览器本体版本严格对应,自动获取失败时需手动下载匹配版本。 - 驱动文件位置错误
驱动未放置在Python解释器目录或系统PATH包含的路径中,导致Selenium无法定位。 - Selenium版本兼容性
Selenium 4以下版本不支持Edge的自动驱动管理,需升级到Selenium 4。
解决方案步骤
1. 确认Edge浏览器版本
通过浏览器地址栏输入 edge://settings/help 查看完整版本号(如 120.0.2210.91)。
2. 手动下载匹配驱动
- 访问Microsoft官方驱动下载页:
Microsoft Edge WebDriver - 选择与浏览器版本完全一致的驱动下载(注意x86/x64架构)。
3. 配置驱动路径
- 方法A:将解压后的msedgedriver.exe放入Python解释器目录
通过以下代码获取解释器路径:
import sys
print(sys.executable)
C:\Users\batytao\PycharmProjects\PythonProject\.venv\Scripts\python.exe
- 方法B:添加驱动所在目录到系统环境变量PATH中。
4. 代码中显式指定驱动路径(本人实测试,方法正常可行推荐使用)
from selenium import webdriver
from selenium.webdriver.edge.service import Service
# 指定驱动路径
service = Service(executable_path=r'C:\Program Files\edgedriver\MicrosoftWebDriver.exe')
#初使化浏览器
driver = webdriver.Edge(service=service)
driver.get("https://www.baidu.com")
from selenium import webdriver
from selenium.webdriver.edge.service import Service
# 指定驱动路径
service = Service(executable_path=r'C:\Program Files\edgedriver\MicrosoftWebDriver.exe')
#添加detach选项防止浏览器闪退
options = webdriver.EdgeOptions()
options.add_experimental_option("detach", True)
# driver = webdriver.Edge(options=options)
#初使化浏览器
driver = webdriver.Edge(options=options,service=service)
#(注:可能是selenium版本原因driver = webdriver.Edge(executable_path=r"C:\path\to\msedgedriver.exe") 无法使用,无executable_path参数)
5. 升级Selenium库
pip install --upgrade selenium
6. 其他注意事项
- 若使用虚拟环境,需确保驱动文件位于虚拟环境的Python目录下。
- 部分Edge版本需将驱动重命名为MicrosoftWebDriver.exe。
- 添加detach选项防止浏览器闪退:
options = webdriver.EdgeOptions()
options.add_experimental_option("detach", True)
driver = webdriver.Edge(options=options)
更多推荐
所有评论(0)