Edge WebDriver中--guest与download.default_directory无法共存的求助
问题
在创建Edge WebDriver实例时,尝试同时启用--guest模式(用来移除Edge侧边栏)和通过download.default_directory指定自定义下载路径,但遇到冲突:启用--guest后,自定义下载路径失效,文件会默认下载到系统Downloads文件夹;移除--guest则下载路径设置正常。代码如下:
options = webdriver.EdgeOptions() options.add_argument('--guest') prefs = {"download.default_directory": temp_path, "download.prompt_for_download": False, "excludeSwitches": ['enable-logging'] } options.add_experimental_option("prefs", prefs) return webdriver.Edge(options=options)
需要找到以下两种解决方法之一:
- 同时使用
--guest与自定义下载路径 - 不使用
--guest选项移除Edge侧边栏
解决方法1:同时启用--guest与自定义下载路径
--guest模式会创建独立的临时用户配置环境,常规的prefs配置无法生效。改用Edge的命令行参数--download-dir直接指定下载路径即可绕过这个问题,代码修改如下:
options = webdriver.EdgeOptions() options.add_argument('--guest') # 直接用--download-dir指定下载路径 options.add_argument(f'--download-dir={temp_path}') prefs = { "download.prompt_for_download": False, "excludeSwitches": ['enable-logging'] } options.add_experimental_option("prefs", prefs) return webdriver.Edge(options=options)
该方法利用命令行参数直接作用于guest会话,无需依赖用户配置文件,因此能正常生效。
解决方法2:不使用--guest移除Edge侧边栏
如果不需要guest模式,可通过添加禁用侧边栏的命令行参数来移除Edge侧边栏,同时保留自定义下载路径的配置:
options = webdriver.EdgeOptions() # 添加禁用侧边栏的参数 options.add_argument('--disable-features=msEdgeSidebar,msEdgeSidebarV2') prefs = {"download.default_directory": temp_path, "download.prompt_for_download": False, "excludeSwitches": ['enable-logging'] } options.add_experimental_option("prefs", prefs) return webdriver.Edge(options=options)
也可以通过修改prefs配置来禁用侧边栏,在prefs字典中添加"edge.sidebar.enabled": False:
prefs = { "download.default_directory": temp_path, "download.prompt_for_download": False, "excludeSwitches": ['enable-logging'], "edge.sidebar.enabled": False }
两种方式都能在非guest模式下移除侧边栏,同时保证下载路径配置正常。
内容的提问来源于stack exchange,提问作者Choong
相关产品推荐
相关产品推荐

