如何在PowerShell中通过EdgeDriver设置默认下载目录
解决PowerShell + Selenium 3 设置Edge默认下载路径的问题
核心问题修正
你之前的代码错误地将prefs设置为嵌套哈希表,正确格式应直接使用"download.default_directory"作为键名对应目标路径。结合Selenium 3特性,以下是可正常运行的代码:
# 初始化EdgeOptions对象 $options = New-Object OpenQA.Selenium.Edge.EdgeOptions # 构造正确的prefs哈希表:直接指定下载路径键值对 $downloadPrefs = @{ "download.default_directory" = "C:\temp" # 可选:添加其他下载相关偏好,比如禁用下载提示 "download.prompt_for_download" = $false "download.directory_upgrade" = $true } # 使用AddAdditionalCapability添加偏好设置(Selenium 3对应方法) $options.AddAdditionalCapability("prefs", $downloadPrefs) # 初始化EdgeDriver $driver = New-Object OpenQA.Selenium.Edge.EdgeDriver($options)
关键说明
- 偏好结构纠正:Selenium中Edge的
prefs参数不需要嵌套download字典,直接使用完整配置键名(如download.default_directory)即可,逻辑和你参考的Python方案一致,仅用PowerShell哈希表替代Python字典。 - 版本方法适配:你通过
Get-Member看到的AddAdditionalCapability是Selenium 3中EdgeOptions的正确方法,Microsoft文档提到的AddAdditionalEdgeOption属于Selenium 4及以上版本,版本差异导致了文档与实际可用方法的不一致。 - 兼容性说明:Selenium 3完全兼容EdgeChromium驱动,只要保证EdgeDriver版本与本地Edge浏览器版本一致即可,无需强制升级到Selenium 4。
额外验证步骤
- 确认
C:\temp目录已存在,若不存在可提前执行New-Item -Path "C:\temp" -ItemType Directory -Force创建。 - 运行脚本后触发浏览器下载操作,检查文件是否保存到指定路径。
内容的提问来源于stack exchange,提问作者DizzleBeans
相关产品推荐
相关产品推荐

