与 AI 的对话备份:selenium 的 Edge driver 版本同步
2025-07-17 日的对话:2025-07-17 日的对话:selenium 的 Edge driver 版本同步?要让 Selenium 的 EdgeDriver 与 Microsoft Edge 浏览器版本同步,关键是确保两者的版本号,否则可能会导致浏览器无法启动或出现兼容性错误。🔧使用 Selenium 4.27.1 及以上版本时,如果未指定,Selenium 会自动下载与当前 Edg
2025-07-17 日的对话:
selenium 的 Edge driver 版本同步?
要让 Selenium 的 EdgeDriver 与 Microsoft Edge 浏览器版本同步,关键是确保两者的版本号完全匹配,否则可能会导致浏览器无法启动或出现兼容性错误。
🔧 同步方法建议:
-
自动下载匹配版本(推荐) 使用 Selenium 4.27.1 及以上版本时,如果未指定
msedgedriver.exe,Selenium 会自动下载与当前 Edge 浏览器兼容的驱动版本。下载路径通常是:代码
C:\Users\<用户名>\.cache\selenium\msedgedriver\win64\<版本号>\ -
手动下载驱动
-
打开 Edge 浏览器,进入设置 → 关于 Microsoft Edge,查看版本号。
-
前往 Microsoft Edge WebDriver 下载页面。
-
下载与你的浏览器版本完全一致的 EdgeDriver。
-
将
msedgedriver.exe放入你的项目目录或系统环境变量路径中。
-
-
使用 WebDriverManager(Java 项目) 如果你使用 Java,可以通过 WebDriverManager 自动管理驱动:
java
WebDriverManager.edgedriver().setup(); WebDriver driver = new EdgeDriver(); -
Python 示例代码(手动指定驱动路径)
python
from selenium import webdriver from selenium.webdriver.edge.service import Service service = Service(executable_path="路径/msedgedriver.exe") driver = webdriver.Edge(service=service) driver.get("https://www.example.com")
📌 注意事项:
-
Edge 浏览器更新频繁,建议定期检查并更新对应的驱动。
-
如果驱动版本不兼容,可能会出现
SessionNotCreatedException错误。
如果你想要一个自动化脚本来检测并下载匹配版本,我可以帮你写一个。要不要来试试? 😄
好的,帮我写一个检测和下载匹配版本的脚本
当然可以!下面是一个 Python 脚本,它会自动:
-
检测当前安装的 Microsoft Edge 浏览器版本
-
查询对应版本的 EdgeDriver 下载链接
-
下载并解压
msedgedriver.exe
🎯 使用前提: 确保已安装 requests 和 zipfile 模块(标准库已包含 zipfile)。
python
import os
import re
import requests
import zipfile
import shutil
import subprocess
def get_edge_version():
try:
# 通过命令行获取 Edge 版本(仅适用于 Windows)
output = subprocess.check_output(r'reg query "HKCU\Software\Microsoft\Edge\BLBeacon" /v version', shell=True).decode()
version = re.search(r"version\s+REG_SZ\s+([^\s]+)", output).group(1)
return version
except Exception as e:
print("无法检测 Edge 版本:", e)
return None
def get_driver_download_url(version):
major_version = version.split('.')[0]
base_url = f"https://msedgedriver.azureedge.net/{version}/edgedriver_win64.zip"
# 可选验证下载链接是否存在
response = requests.head(base_url)
if response.status_code == 200:
return base_url
else:
print("未找到匹配的 EdgeDriver。请确认版本:", version)
return None
def download_and_extract_driver(url, extract_path="msedgedriver"):
zip_path = "driver.zip"
response = requests.get(url)
with open(zip_path, "wb") as f:
f.write(response.content)
with zipfile.ZipFile(zip_path, 'r') as zip_ref:
zip_ref.extractall(extract_path)
os.remove(zip_path)
print("驱动已下载并解压到:", extract_path)
if __name__ == "__main__":
edge_version = get_edge_version()
if edge_version:
print("检测到 Edge 版本:", edge_version)
download_url = get_driver_download_url(edge_version)
if download_url:
download_and_extract_driver(download_url)
⚠️ 小贴士:
-
如果你用的是 macOS 或 Linux,需要修改
get_edge_version()的检测方式。 -
驱动路径解压后可用于 Selenium:
python
from selenium import webdriver from selenium.webdriver.edge.service import Service service = Service(executable_path="msedgedriver/msedgedriver.exe") driver = webdriver.Edge(service=service) driver.get("https://www.example.com")
我也可以帮你加上 UI 或把它改成批处理文件或 shell 脚本,要不要再进阶一下? 😄
正则表达式的 pattern 字符串为 r"version\s+REG_SZ\s+([^\s]+)",解释一下这个 pattern 是什么意思。
当然!来详细拆解一下这个正则表达式:
python
r"version\s+REG_SZ\s+([^\s]+)"
📘 这是一段用于提取注册表中 Edge 浏览器版本的正则表达式,以下是它的逐段解释:
🔍 组件解析
| 表达式片段 | 含义说明 |
|---|---|
version |
匹配固定字符串 "version",即注册表字段名 |
\s+ |
匹配一个或多个空白字符(如空格或制表符) |
REG_SZ |
匹配固定字符串 "REG_SZ",表示注册表中的字符串类型 |
\s+ |
再次匹配一个或多个空白字符 |
([^\s]+) |
分组捕获:匹配非空白字符的连续字符串,即实际的浏览器版本号 |
🎯 示例匹配内容
假设注册表输出为:
代码
version REG_SZ 124.0.2478.67
这个正则将从中提取出 124.0.2478.67,因为:
-
version和REG_SZ是定位标识 -
版本号后面是连续的非空白字符,被括号捕获
🧠 技巧提示
-
([^\s]+)中的[]表示字符集合,^表示取反,即排除空白字符,+表示匹配一个或多个连续字符。 -
使用
r""原始字符串前缀可以避免\被 Python 解读为转义符。
如果你想要更宽容一点的匹配(比如允许多个空格或制表符),这个表达式已经是比较稳妥的写法。如果你对正则很感兴趣,我还可以帮你总结一些常用模式或编写测试工具哦 😄 想试试吗?
星期五,8 月 8
想试试
太棒了!既然你想试试正则表达式,我们可以做一个小型的 正则表达式测试工具,让你输入一个表达式和一段文本,看看能不能匹配成功,还能显示匹配结果。
🧪 正则表达式测试工具(Python版)
python
import re
def test_regex(pattern, test_string):
try:
match = re.search(pattern, test_string)
if match:
print("✅ 匹配成功!")
print("匹配内容:", match.group())
print("匹配位置:", match.span())
else:
print("❌ 没有匹配到任何内容。")
except re.error as e:
print("⚠️ 正则表达式语法错误:", e)
if __name__ == "__main__":
# 示例:你可以修改这两行来试验不同的表达式和文本
pattern = r"version\s+REG_SZ\s+([^\s]+)"
test_string = "version REG_SZ 124.0.2478.67"
test_regex(pattern, test_string)
🧠 想尝试的表达式示例:
| 表达式 | 说明 |
|---|---|
\d{4}-\d{2}-\d{2} |
匹配日期格式,如 2025-08-08 |
\b[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\.[A-Za-z]{2,}\b |
匹配邮箱地址 |
^https?://.* |
匹配以 http 或 https 开头的 URL |
^[1-9]\d*$ |
匹配正整数 |
\b\d{3}-\d{3}-\d{4}\b |
匹配美国电话号码格式,如 123-456-7890 |
你可以把这个脚本保存为 regex_tester.py,然后运行它来测试各种表达式。如果你想要图形界面版本(比如用 Tkinter),我也可以帮你做一个。要不要升级一下? 😄
帮我做一个带图形界面的正则表达式测试工具
当然可以!下面是一个使用 Python 和 Tkinter 构建的 图形界面正则表达式测试工具,你可以直接运行它,输入正则表达式和测试文本,点击按钮查看匹配结果。
🖥️ 正则表达式测试工具(Tkinter GUI)
python
import tkinter as tk
from tkinter import messagebox
import re
def test_regex():
pattern = entry_pattern.get()
text = entry_text.get("1.0", tk.END)
try:
matches = re.findall(pattern, text)
if matches:
result = "\n".join(str(m) for m in matches)
messagebox.showinfo("匹配结果", f"✅ 匹配成功!\n\n匹配内容:\n{result}")
else:
messagebox.showinfo("匹配结果", "❌ 没有匹配到任何内容。")
except re.error as e:
messagebox.showerror("错误", f"⚠️ 正则表达式语法错误:\n{e}")
# 创建主窗口
root = tk.Tk()
root.title("正则表达式测试工具")
root.geometry("500x300")
# 正则表达式输入框
tk.Label(root, text="正则表达式:").pack(anchor="w", padx=10, pady=5)
entry_pattern = tk.Entry(root, width=60)
entry_pattern.pack(padx=10)
# 测试文本输入框
tk.Label(root, text="测试文本:").pack(anchor="w", padx=10, pady=5)
entry_text = tk.Text(root, height=8, width=60)
entry_text.pack(padx=10)
# 测试按钮
tk.Button(root, text="测试匹配", command=test_regex).pack(pady=10)
# 运行主循环
root.mainloop()
🧪 使用方法:
-
安装 Python(推荐使用 Python 3.8+)。
-
将上述代码保存为
regex_gui.py。 -
双击运行或在终端中输入
python regex_gui.py。 -
输入正则表达式和测试文本,点击“测试匹配”按钮。
如果你想要添加更多功能,比如高亮匹配、支持多行匹配、保存结果等,我也可以帮你扩展。要不要来个“进阶版”? 😄
====
2026-02-28 的对话:
用 python 语言,给我写一个下载能匹配当前 Edge 浏览器版本的 selenium driver (x64)的代码。并能够自动解压缩下载的压缩包。
下面给你一个完整的 Python 示例代码,它会自动获取当前 Edge 浏览器版本,下载对应的 x64 版本的 Selenium EdgeDriver 压缩包,并自动解压缩到指定目录。
python
import os
import zipfile
import requests
import shutil
import subprocess
import platform
def get_edge_version():
"""
获取当前系统已安装的 Edge 浏览器版本
"""
try:
if platform.system() == "Windows":
# 通过注册表获取 Edge 版本
import winreg
key = winreg.OpenKey(winreg.HKEY_CURRENT_USER,
r"Software\Microsoft\Edge\BLBeacon")
version, _ = winreg.QueryValueEx(key, "version")
return version
else:
# 非 Windows 系统尝试调用命令行
result = subprocess.run(["microsoft-edge", "--version"],
capture_output=True, text=True)
return result.stdout.strip().split()[-1]
except Exception as e:
raise RuntimeError("无法获取 Edge 版本: " + str(e))
def download_edgedriver(version, dest_dir="edgedriver"):
"""
下载并解压缩与指定 Edge 版本匹配的 EdgeDriver (x64)
"""
# EdgeDriver 下载地址格式
base_url = f"https://msedgedriver.azureedge.net/{version}/edgedriver_win64.zip"
zip_path = os.path.join(dest_dir, "edgedriver.zip")
# 创建目录
os.makedirs(dest_dir, exist_ok=True)
print(f"正在下载 EdgeDriver {version} (x64)...")
response = requests.get(base_url, stream=True)
if response.status_code != 200:
raise RuntimeError(f"下载失败,状态码: {response.status_code}")
# 保存压缩包
with open(zip_path, "wb") as f:
shutil.copyfileobj(response.raw, f)
print("下载完成,开始解压缩...")
with zipfile.ZipFile(zip_path, "r") as zip_ref:
zip_ref.extractall(dest_dir)
# 删除压缩包
os.remove(zip_path)
print(f"EdgeDriver 已解压到目录: {dest_dir}")
if __name__ == "__main__":
edge_version = get_edge_version()
print("当前 Edge 浏览器版本:", edge_version)
download_edgedriver(edge_version)
代码说明
-
get_edge_version():自动检测当前系统的 Edge 浏览器版本(Windows 使用注册表,Linux/macOS 尝试命令行)。
-
download_edgedriver():根据版本号拼接官方 EdgeDriver 下载地址,下载对应的 x64 压缩包并解压缩。
-
下载完成后,
msedgedriver.exe会被解压到edgedriver/目录。
这样你就可以直接在 Selenium 中使用这个驱动了,例如:
python
from selenium import webdriver
driver = webdriver.Edge(executable_path="edgedriver/msedgedriver.exe")
driver.get("https://www.microsoft.com")
要不要我帮你扩展一下,让它在下载后自动把 msedgedriver.exe 添加到系统 PATH,这样你就不用手动指定路径了?
更多推荐

所有评论(0)