是否可以 运行 selenium 3.x 测试 Firefox 晚于 52,将 "marionette" 功能设置为 false(不使用 GeckoDriver)?
Is it possible to run selenium 3.x tests with Firefox later than 52, having "marionette" capability set to false (NOT using GeckoDriver)?
使用 selenium 3.13.0 我无法 运行 针对 Firefox 60 ESR 进行测试。在创建 FirefoxDriver 的实例时,它会抛出超时异常。
它在 Firefox 52 ESR 上运行良好,直到我更新到 60 ESR。我怀疑 Firefox 60 需要 GeckoDriver,并且与 "legacy" 方法不兼容,该方法使用内置于 Selenium 服务器的驱动程序。
所以,问题是:是否可以避免使用 GeckoDriver,与 Firefox 60 配合使用?
这是代码示例 (options.setCapability("marionette", false))
private WebDriver createFirefoxDriver() {
FirefoxOptions options = new FirefoxOptions();
// marionette = false to NOT use geckodriver
options.setCapability("marionette", false);
options.addPreference("services.sync.prefs.sync.browser.download.useDownloadDir", false);
options.addPreference("browser.download.manager.showWhenStarting", false);
options.addPreference("browser.download.panel.shown", false);
options.addPreference("browser.download.manager.alertOnEXEOpen", false);
options.addPreference("browser.download.folderList", 2);
options.addPreference("browser.download.manager.showAlertOnComplete", false);
options.addPreference("browser.helperApps.neverAsk.saveToDisk",
"application/json, application/zip, application/x-zip, application/x-zip-compressed, " +
"application/download, application/octet-stream");
options.addPreference("browser.download.useToolkitUI", true);
options.addPreference("dom.disable_window_flip", false);
options.addPreference("browser.download.dir", Paths.get(EnvironmentProperties.get().sdaPathToTestData).toAbsolutePath().toString());
WebDriver webDriver = new FirefoxDriver(options);
webDriver.manage().window().maximize();
return webDriver;
}
答案是,不可能。您可以使用的最后一个版本是 Firefox 52.9,之后不再支持 Legacy 驱动程序,Firefox 60 ESR 不支持 legacy 驱动程序。
这真是一个悲伤的消息,因为我仍然在某些地方发现了 gecko 的问题,但我从未发现过遗留驱动程序的问题。我从遗留驱动程序中错过的主要一个是可见性检查,实际上我已经在 geckodriver 中提出了这个问题,但他们仍然没有添加。开始使用不能等同于旧版驱动程序的 geckodriver,但尝试处理程序中缺失的部分。
我最好的建议是使用 WATIR,它是 selenium ruby 绑定的包装器,如果您使用 WATIR,您真的不必担心使用哪个驱动程序,因为它可以处理所有问题。有一些例外 类 Chrome 没有提供,但 firefox 提供,在这种情况下,您可能会发现一些差异,但除此之外没有其他差异。
使用 selenium 3.13.0 我无法 运行 针对 Firefox 60 ESR 进行测试。在创建 FirefoxDriver 的实例时,它会抛出超时异常。
它在 Firefox 52 ESR 上运行良好,直到我更新到 60 ESR。我怀疑 Firefox 60 需要 GeckoDriver,并且与 "legacy" 方法不兼容,该方法使用内置于 Selenium 服务器的驱动程序。
所以,问题是:是否可以避免使用 GeckoDriver,与 Firefox 60 配合使用?
这是代码示例 (options.setCapability("marionette", false))
private WebDriver createFirefoxDriver() {
FirefoxOptions options = new FirefoxOptions();
// marionette = false to NOT use geckodriver
options.setCapability("marionette", false);
options.addPreference("services.sync.prefs.sync.browser.download.useDownloadDir", false);
options.addPreference("browser.download.manager.showWhenStarting", false);
options.addPreference("browser.download.panel.shown", false);
options.addPreference("browser.download.manager.alertOnEXEOpen", false);
options.addPreference("browser.download.folderList", 2);
options.addPreference("browser.download.manager.showAlertOnComplete", false);
options.addPreference("browser.helperApps.neverAsk.saveToDisk",
"application/json, application/zip, application/x-zip, application/x-zip-compressed, " +
"application/download, application/octet-stream");
options.addPreference("browser.download.useToolkitUI", true);
options.addPreference("dom.disable_window_flip", false);
options.addPreference("browser.download.dir", Paths.get(EnvironmentProperties.get().sdaPathToTestData).toAbsolutePath().toString());
WebDriver webDriver = new FirefoxDriver(options);
webDriver.manage().window().maximize();
return webDriver;
}
答案是,不可能。您可以使用的最后一个版本是 Firefox 52.9,之后不再支持 Legacy 驱动程序,Firefox 60 ESR 不支持 legacy 驱动程序。
这真是一个悲伤的消息,因为我仍然在某些地方发现了 gecko 的问题,但我从未发现过遗留驱动程序的问题。我从遗留驱动程序中错过的主要一个是可见性检查,实际上我已经在 geckodriver 中提出了这个问题,但他们仍然没有添加。开始使用不能等同于旧版驱动程序的 geckodriver,但尝试处理程序中缺失的部分。
我最好的建议是使用 WATIR,它是 selenium ruby 绑定的包装器,如果您使用 WATIR,您真的不必担心使用哪个驱动程序,因为它可以处理所有问题。有一些例外 类 Chrome 没有提供,但 firefox 提供,在这种情况下,您可能会发现一些差异,但除此之外没有其他差异。