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

Selenium+C#环境下如何为SafariOptions和RemoteWebDriver添加配置项

Selenium+C#环境下如何为SafariOptions和RemoteWebDriver添加配置项

嗨,针对你在Selenium+C#环境下切换到Safari时遇到的下载目录配置问题,我来给你梳理下解决方案~

首先要明确,Safari的配置逻辑和Chromium系浏览器(Chrome/Edge)不太一样,没有直接的AddUserProfilePreference方法,但我们可以通过SafariOptions的SetPreference方法来实现类似的配置。

具体代码实现

你可以这样创建并配置SafariOptions,然后初始化RemoteWebDriver:

using OpenQA.Selenium;
using OpenQA.Selenium.Remote;
using OpenQA.Selenium.Safari;

// 定义你的自定义下载路径(注意macOS下要用绝对路径)
string customDownloadPath = "/Users/your-username/YourCustomDownloadFolder";

// 初始化SafariOptions并设置下载相关偏好
var safariOptions = new SafariOptions();
// 设置默认下载目录
safariOptions.SetPreference("download.default_directory", customDownloadPath);
// 禁用下载提示弹窗
safariOptions.SetPreference("download.prompt_for_download", false);
// 允许升级下载目录(如果目录不存在则创建)
safariOptions.SetPreference("download.directory_upgrade", true);

// 初始化RemoteWebDriver(这里假设你的SafariDriver服务运行在本地默认端口)
IWebDriver driver = new RemoteWebDriver(new Uri("http://localhost:4444/wd/hub"), safariOptions);

关键注意事项

  • 路径要求:macOS下必须使用绝对路径,不能用相对路径,否则Safari可能无法识别;
  • Safari权限设置:确保你已经开启了Safari的「开发」菜单,并且在菜单中勾选了「允许远程自动化」(如果还没开启开发菜单,可以在Safari偏好设置的「高级」选项卡中勾选「在菜单栏中显示开发菜单」);
  • 版本兼容性:确认你使用的Selenium版本和SafariDriver版本匹配,避免出现兼容性问题。

对比之前的Chromium代码

你之前在Chrome/Edge中使用的代码:

options.AddUserProfilePreference("download.default_directory", DownloadPath);

在Safari中我们替换为SetPreference方法,本质都是向浏览器传递用户偏好配置,只是方法名和部分偏好键可能略有差异。

备注:内容来源于stack exchange,提问作者Kev

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.14 11:34:33