新手编写图片解析器时如何修复Selenium Edge驱动session not created错误?
解决Edge浏览器驱动启动报错:用户数据目录已占用
报错原因
当前Edge默认的用户数据目录被其他Edge实例(比如手动打开的浏览器、未正常退出的驱动进程)占用,导致自动化驱动无法创建新会话。
解决方法
方法一:指定独立的自动化用户数据目录
给EdgeOptions添加--user-data-dir参数,指向一个全新的目录,让驱动使用专属配置文件,避免和日常使用的Edge冲突。代码修改如下:
# 在options的参数列表中添加这一行,路径可自定义 options.add_argument('--user-data-dir=C:/temp/edge_auto_profile') # Windows示例 # Linux/macOS示例:options.add_argument('--user-data-dir=/tmp/edge_auto_profile')
方法二:清理残留的Edge进程
如果是之前的驱动进程未正常退出导致目录被占用,手动关闭所有Edge窗口,或者用命令强制结束进程:
- Windows:打开任务管理器,结束所有「Microsoft Edge」进程,或执行命令:
taskkill /F /IM msedge.exe - Linux:终端执行
pkill msedge - macOS:终端执行
killall "Microsoft Edge"
修改后的完整代码示例
def setup_browser(): options = EdgeOptions() options.add_argument('--start-maximized') options.add_argument('--no-sandbox') options.add_argument('--disable-dev-shm-usage') options.add_argument('--disable-blink-features=AutomationControlled') options.add_experimental_option('excludeSwitches', ['enable-automation']) options.add_experimental_option('useAutomationExtension', False) options.add_argument('--disable-gpu') options.add_argument('--disable-software-rasterizer') # 添加独立用户数据目录 options.add_argument('--user-data-dir=C:/temp/edge_auto_profile') try: driver_manager = EdgeChromiumDriverManager() driver_path = driver_manager.install() service = EdgeService(driver_path) driver = webdriver.Edge(service=service, options=options) logging.info(f"Edge driver installed: {driver_path}") except Exception as e: logging.error(f"Error driver installed: {str(e)}") raise e driver.execute_script( "Object.defineProperty(navigator, 'webdriver', {get: () => undefined})" ) return driver
内容的提问来源于stack exchange,提问作者Даниил Губанов
相关产品推荐
相关产品推荐

