有什么方法可以使用 Selenium C# 为 Safari 使用遗留协议吗?

Is there any way to use the legacy protocol for Safari using Selenium C#

主机:Windows 10 使用 VS 2017、Selenium (.NET) 和 SpecFlow+

我在网络上有一个带有 Safari v12 的 Mojave MacOS,我需要 运行 我的测试脚本。 我正在使用 RemoteWebDriver 运行ning Selenium C# 脚本,但它们失败了,因为 v12 使用最新的 W3C 协议。 SafariDriver 可以使用“--legacy”开关启动。 SafariDriverService 有一个 "UseLegacyProtocol" 但不能在 RemoteWebDriver 中传递(下面的示例)。 有没有办法通过以下方式激活开关: a) 通过 RemoteWebDriver 传递它? b) 将它作为一种功能与选项合并并通过 RemoteWebDriver 传递? c) 在 json 文件中配置开关以用于 Selenium Grid v3?

这是为了使用 C# 代码。

代码例子我已经有:

var sOptions = new SafariOptions();
sOptions.Proxy = null;
var sService = SafariDriverService.CreateDefaultService();
sService.Port = xxxx;
sService.UseLegacyProtocol = true;
Browser = new SafariDriver(sService, sOptions,
TimeSpan.FromSeconds(PageTimeout));

var rOptions = new SafariOptions();    
Browser = new RemoteWebDriver(new Uri("http://xx.xxx.xx.xx:xxxx/wd/hub"), rOptions);

谢谢

您可以使用以下代码将功能合并到 SafariOptions 中:

SafariOptions options = new SafariOptions();
            options.merge(capabilities);

但是还是有bug,Safaridriver不能处理Proxy,在backlog中还是open ticket

Safari/safaridriver 的发布版本不再支持旧版协议,所以我认为这个问题可以关闭。