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

使用Selenium连接Edge IE模式加载配置文件失败,报错无法创建默认配置目录

问题描述

我有一个用于访问未升级工作内网站点的Python脚本,这些站点需在Edge的IE兼容模式下运行。因系统更新后IE已停用,我修改了脚本以适配Edge的IE模式,但新脚本仅打开无配置文件的自动化窗口,无法利用配置文件的内网访问权限,且运行时出现报错:

Message: session not created
from unknown error: cannot create default profile directory

导入库

from decimal import Decimal
from sys import argv
from time import sleep
import os
import shutil
import traceback
from selenium import webdriver
from selenium.webdriver.edge.service import Service
from selenium.common.exceptions import InvalidElementStateException, TimeoutException
from selenium.webdriver.common.by import By
import selenium.webdriver.support.ui as ui
import xlrd

原函数

def create_browser():
    ie_options = webdriver.IeOptions()
    # run edge in IE mode
    # would stick to regular instance of edge in ie compatibility mode
    ie_options.attach_to_edge_chrome = True
    ie_options.edge_executable_path="C:/Program Files (x86)/Microsoft/Edge/Application/msedge.exe"
    
    return webdriver.Ie(options = options)

新函数

def create_browser():
    edge_options = webdriver.EdgeOptions()
    edge_options.add_argument("--ie-mode-test")
    #edge_options.add_argument("--start-maximized")
    edge_options.add_argument(r"--user-data-dir=C:\Users\%USERNAME%\AppData\Local\Microsoft\Edge\User Data")
    edge_options.add_argument("--profile-directory=Default")

    service = Service(executable_path=r"C:\Webdrivers\msedgedriver.exe")
    return webdriver.Edge(service=service, options=edge_options)

请问我是否遗漏了什么配置?是否有Selenium相关的设置被我忽略了?


解决方案

针对你的问题,主要有几个关键点需要修正:

  • 用户变量解析问题
    你在--user-data-dir中使用的%USERNAME%是Windows环境变量,Python不会自动解析,需要用os.environ['USERNAME']替换来生成正确路径:
user_data_dir = fr"C:\Users\{os.environ['USERNAME']}\AppData\Local\Microsoft\Edge\User Data"
edge_options.add_argument(f"--user-data-dir={user_data_dir}")
  • IE模式的正确配置方式
    仅添加--ie-mode-test不足以启用正式的IE兼容模式,需要通过EdgeOptions的实验性配置指定Edge路径并启用IE模式,同时确保浏览器和驱动版本完全匹配:
edge_options.add_experimental_option("ie.edgechromium", True)
edge_options.add_experimental_option("ie.edgepath", r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe")
edge_options.add_argument("--ie-mode")
  • 避免配置文件占用冲突
    如果当前有普通Edge窗口在运行,Selenium无法直接使用正在被占用的Default配置文件,解决方法:

    1. 关闭所有Edge窗口后再运行脚本
    2. 复制一份Default配置到新目录,将新目录设为--user-data-dir的目标路径
  • 原函数笔误修正(可选)
    原函数返回时误用了未定义的options变量,应该替换为ie_options:

return webdriver.Ie(options=ie_options)

修正后的完整create_browser函数示例:

def create_browser():
    edge_options = webdriver.EdgeOptions()
    # 配置IE模式核心参数
    edge_options.add_experimental_option("ie.edgechromium", True)
    edge_options.add_experimental_option("ie.edgepath", r"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe")
    edge_options.add_argument("--ie-mode")
    
    # 正确生成用户数据目录路径
    user_data_dir = fr"C:\Users\{os.environ['USERNAME']}\AppData\Local\Microsoft\Edge\User Data"
    edge_options.add_argument(f"--user-data-dir={user_data_dir}")
    edge_options.add_argument("--profile-directory=Default")

    service = Service(executable_path=r"C:\Webdrivers\msedgedriver.exe")
    return webdriver.Edge(service=service, options=edge_options)

额外注意:若企业环境有组策略限制IE模式的自动化访问,需要联系IT部门确认权限配置。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.11 16:34:54