从Firefox版本47.0(刚发布不久)开始,必须使用一个新的驱动程序(由mozilla而不是selenium创建)来连接Firefox,因为这个版本引入了一个bug。从Firefox 48.0版本开始,旧的驱动程序将被完全弃用,并且只能使用木偶,因此最好现在切换。见:Marionette Webdriver for Firefox
下载driver(在OSX中,只需使用brew install geckodriver),在windows或*nix系统中将可执行文件重命名为wires.exe,并确保可执行文件存在于系统路径中,然后在程序中使用此驱动程序而不是使用旧驱动程序,方法如下:
使用本地webdriver时:
Python:firefox_capabilities = DesiredCapabilities.FIREFOX
firefox_capabilities['marionette'] = True
driver = webdriver.Firefox(capabilities=firefox_capabilities)
红宝石:driver = Selenium::WebDriver.for :firefox, marionette: true
Javascript代码:var capabilities = Capabilities.firefox();
capabilities.set('marionette', true);
var driver = new webdriver.Builder().withCapabilities(capabilities).build();
爪哇语:DesiredCapabilities capabilities = DesiredCapabilities.firefox();
capabilities.setCapability("marionette", true);
Webdriver driver = new FirefoxDriver(capabilities);
C#:var driver = new FirefoxDriver(new FirefoxOptions());
使用硒网格时:
使用selenium网格时,驱动程序应该出现在网格中所有计算机的路径中。
Python:firefox_capabilities = DesiredCapabilities.FIREFOX
firefox_capabilities['marionette'] = True
driver = webdriver.Firefox(capabilities=firefox_capabilities)
红宝石:caps = Selenium::WebDriver::Remote::Capabilities.firefox marionette: true
driver = Selenium::WebDriver.for :firefox, desired_capabilities: caps
爪哇语:DesiredCapabilities capabilities = DesiredCapabilities.firefox();
// Set Marionette on so the Grid will use this instead of normal FirefoxDriver
capabilities.setCapability("marionette", true);
WebDriver driver = new RemoteWebDriver(capabilities);
C#:DesiredCapabilities capabilities = DesiredCapabilities.Firefox();
// Set Marionette on so the Grid will use this instead of normal FirefoxDriver
capabilities.SetCapability("marionette", true);
var driver = new RemoteWebDriver(capabilities);