如何使用Selenium打开Edge浏览器并保持登录状态
Selenium默认启动Edge时会创建一个全新的临时空白用户配置,不会加载本地Edge的历史缓存、登录态Cookie、用户偏好等数据,所以无法保留登录状态,可通过以下两种方案解决:
方案1:加载本地Edge用户配置(推荐)
- 先打开本地Edge,地址栏输入
edge://version,找到「个人资料路径」字段,复制对应路径,注意末尾的Default是默认配置文件目录,你也可以换成你自己创建的其他配置文件夹名 - 代码中配置启动参数加载该配置,Python示例代码如下:
from selenium import webdriver from selenium.webdriver.edge.options import Options edge_options = Options() # 替换为你自己的用户配置父目录,注意去掉路径末尾的\Default edge_options.add_argument(r"user-data-dir=C:\Users\XXX\AppData\Local\Microsoft\Edge\User Data") # 如果要指定非默认的配置文件,加下面这行,Profile 1替换为你的配置文件夹名 # edge_options.add_argument("profile-directory=Profile 1") driver = webdriver.Edge(options=edge_options)
- 注意启动Selenium前要完全关闭所有本地已经打开的Edge窗口,否则会出现配置文件被占用的报错,无法正常启动。
适合不需要使用本地配置、或者脚本需要在多环境运行的场景:
- 第一次启动浏览器后手动完成登录,然后将当前页面的Cookie导出保存到本地文件
- 后续启动浏览器后,先打开对应网站的域名根路径,再将保存的Cookie加载到浏览器中,刷新页面即可恢复登录态,Python示例代码如下:
import json from selenium import webdriver # 第一次运行:保存Cookie driver = webdriver.Edge() driver.get("目标网站地址") # 手动完成登录后,执行下面的代码存Cookie cookies = driver.get_cookies() with open("cookies.json", "w") as f: json.dump(cookies, f) driver.quit() # 后续运行:加载Cookie driver = webdriver.Edge() driver.get("目标网站地址") with open("cookies.json", "r") as f: cookies = json.load(f) for cookie in cookies: driver.add_cookie(cookie) driver.refresh() # 刷新后就会显示已登录状态
- 注意Cookie存在有效期,过期后需要重新登录保存新的Cookie。
注意事项
- 两种方案都需要保证Edge浏览器版本和你使用的EdgeDriver版本完全匹配,否则可能出现配置加载失败的问题
- 如果目标网站有反爬检测,可额外添加
--disable-blink-features=AutomationControlled启动参数隐藏Selenium特征,避免登录态被网站强制下线。
内容的提问来源于stack exchange,提问作者mincla
相关产品推荐
相关产品推荐

