【问题标题】:Setting BrowserExecutableLocation in FirefoxOptions in Selenium doesn't prevent an "Unable to find a matching set of capabilities" error在 Selenium 的 FirefoxOptions 中设置 BrowserExecutableLocation 并不能防止“无法找到匹配的功能集”错误
【发布时间】:2017-07-21 15:36:40
【问题描述】:

我对 Selenium 还很陌生,并且正在尝试创建一些通过最低限度的测试用例(我猜你可以将它们称为某种意义上的“hello world”程序)。

我尝试像这样创建 Firefox 驱动程序的实例:

var options = new FirefoxOptions()
{
    BrowserExecutableLocation = @"C:\Program Files(x86)\Mozilla Firefox\Firefox.exe",
    Profile = new FirefoxProfile(),
    LogLevel = FirefoxDriverLogLevel.Debug
};

firefoxDriver = new FirefoxDriver(options);

但是,当我运行测试时,出现以下错误:Unable to find a matching set of capabilities。我在 Stack Overflow 和其他地方阅读的其他几个答案建议解决此问题的方法是明确指定二进制文件的位置,如下所示:

firefoxDriver = new FirefoxDriver(new FirefoxBinary(@"C:\Program Files (x86)\Mozilla Firefox\firefox.exe"), new FirefoxProfile());

当我尝试时,它可以工作,但我收到以下编译器警告:

Warning CS0618 'FirefoxDriver.FirefoxDriver(FirefoxBinary, FirefoxProfile)' is obsolete: 'FirefoxDriver should not be constructed with a FirefoxBinary object. Use FirefoxOptions instead. This constructor will be removed in a future release.'

如果第二个版本有效,为什么第一个版本不能正常工作,因为我在FirefoxOptions 中明确指定了BrowserExecutableLocation?有没有办法让我尝试的第一种方式工作以避免使用第二个已弃用的构造函数?

FWIW,我使用的是 Firefox 52.2.0,我的 NuGet 包设置如下:

<packages>
  <package id="Selenium.Firefox.WebDriver" version="0.18.0" targetFramework="net452" />
  <package id="Selenium.WebDriver" version="3.4.0" targetFramework="net452" />
  <package id="Selenium.WebDriver.IEDriver" version="3.4.0" targetFramework="net452" />
</packages>

【问题讨论】:

    标签: c# selenium firefox selenium-webdriver selenium-firefoxdriver


    【解决方案1】:

    如果你特别想使用 FirefoxOptions,试试这个构造函数:

    FirefoxDriver(FirefoxDriverService service, FirefoxOptions options, TimeSpan commandTimeout);
    

    对我来说,以下方法不起作用:

    FirefoxDriverService service = FirefoxDriverService.CreateDefaultService(Path to Gecko);
    service.FirefoxBinaryPath = @"C:\Program Files\Mozilla Firefox\firefox.exe";
    driver = new FirefoxDriver(service);
    

    但是以下方法效果很好:

    FirefoxDriverService service = FirefoxDriverService.CreateDefaultService("Gecko Path");
    FirefoxOptions options = new FirefoxOptions();
    options.BrowserExecutableLocation = @"C:\Program Files\Mozilla Firefox\firefox.exe";
    driver = new FirefoxDriver(service, options, TimeSpan.FromMinutes(1));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-12-25
      • 2018-07-30
      • 1970-01-01
      • 2021-02-11
      • 2020-01-20
      • 2018-01-26
      • 1970-01-01
      相关资源
      最近更新 更多