有了selenium 3.13.0,我无法对Firefox 60 ESR进行测试。在创建FirefoxDriver的实例时,它会抛出超时异常。
它在Firefox 52 ESR上运行良好,直到我更新到60 ESR。我怀疑Firefox 60需要GeckoDriver并且与使用内置于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不支持传统驱动程序。
这真是一个令人遗憾的消息,因为我仍然在某些地方发现了壁虎的问题,但传统的驱动程序我从未发现过这样的问题。我从传统驱动程序中遗漏的主要问题是可见性检查,我实际上已经在geckodriver中提出了问题,但他们还没有添加。开始使用geckodriver,它不能与传统驱动程序等效,但尝试处理程序中缺少的部分。
我最好的建议是使用WATIR,它是selenium ruby绑定的包装,如果你使用WATIR,你真的不必担心你使用哪个驱动程序,因为它处理所有问题。 Chrome没有给出一些例外类,但firefox正在提供,在这种情况下你可能会发现一些差异,但除此之外没有其他差异。