我无法在Selenium中重写Java的C#解决方案

我在C#上修改了FireFox浏览器时遇到了一些问题。 当浏览器打开并出现错误时:

TypeError:给定browserName [object String]“firefox”,但我的名字是[object String]“anotherbrowser”

我认为,这是因为浏览器的名称为“anotherbrowser”而不是“firefox”的二进制代码。

所以我在Java上找到了解决方案:

FirefoxOptions options = new FirefoxOptions(); options.setBinary("Path to browser binary"); options.setCapability("browserName", "anotherbrowser"); options.setCapability("marionette", false); driver = new FirefoxDriver(options); 

我测试了它,它的工作正常。 但我需要C#,所以我试着重写它:

 DesiredCapabilities cap = DesiredCapabilities.Firefox(); cap.SetCapability("browserName", "anotherbrowser"); cap.SetCapability("firefox_binary", @"Path to browser binary"); IWebDriver driver = new FirefoxDriver(cap); //here's error 

但是我收到了一个错误:

browserNamefunction已经有一个选项。 请改用。

请帮我重写Java解决方案到C#。 我遇到了麻烦,因为在C#中没有相同的方法,比如在Java中: “options.setCapability(”“,”“);”


Ps我不能使用原始的Firefox浏览器,因为它与我修改过的Firefox没有相同的优势。

您是否尝试过像Java一样使用选项类?

在c#中你可以使用这样的东西:

 FirefoxOptions options = new FirefoxOptions(); options.BrowserExecutableLocation = @"C:\Path\to\firefox"; IWebDriver driver = new FirefoxDriver(options) 

根据: https : //github.com/SeleniumHQ/selenium/wiki/DesiredCapabilities

正在使用的浏览器的名称; 应该是{android,chrome,firefox,htmlunit,internet explorer,iPhone,iPad,opera,safari}之一

根据文档所说的内容,我假设您不需要设置“browserName”function来使用自定义二进制文件。

谁有兴趣,我找到了一个解决方案:

 FirefoxOptions options = new FirefoxOptions(); options.UseLegacyImplementation = true; options.BrowserExecutableLocation = @"Path to Browser"; options.AddAdditionalCapability("browser", "anotherbrowser"); IWebDriver driver = new FirefoxDriver(options);