FirefoxDriver in Selenium 3

Selenium 3 is released and there is a lot of changes that are implemented, and one such major change is the firefox browser implementation using GeckoDriver.

Let’s see How to use FirefoxDriver in Selenium 3

FirefoxDriver was the only driver that was simple to use without any executable configuration setup like chrome or ie. Now, in Selenium 3 you will have to add an executable to its path like how you set system.setproperty. That’s the way going forward as Browser vendors will take care of their own Driver implementation.

Earlier – In Selenium – 2

Now – In Selenium – 3

You shall download the necessary executables from here


GeckoDriver acts as a proxy between the W3c compatible Gecko based browsers like Firefox(48 & up). It provides HTTP API as described by the WebDriver Protocol to communicate to Firefox. It translates calls into the Marionette automation protocol by acting as a proxy between the local- and remote ends.

More details here about Marionette.

Hope that helps!

Thanks for reading.

7 thoughts on “FirefoxDriver in Selenium 3”

  1. Hi Manoj,
    I am learning to test with Selenium WebDriver + Ruby + Cucumber and had some tests working on Firefox 46.0.1. I have been trying to get my tests running with marionette but so far have not had any success. I downloaded wires.exe and added it to my path, I get as far as launching firefox and then it doesn’t do anything and times out with this error message: ” # features/Step_Definition/defined_steps.rb:22 unable to obtain stable firefox connection in 60 seconds ( Selenium::WebDriver::Error::WebDriverError) ”

    Any advice will be greatly appreciated! This is what I have in my defined_steps:
    require ‘rubygems’
    require ‘selenium-webdriver’

    Selenium::WebDriver::Firefox::Binary.path = “my_actual_path/firefox.exe”
    @browser = Selenium::WebDriver.for(:firefox)

  2. Manoj,
    We in our company has recently upgraded to selenium 3.3.1. and gecko .15 and firefox version 52. The test that used to run smoothly before is getting some button clicks. When we changed it to javascript executor commands instead of clicks, it works.Looks like a lot of places we need to rework on our existing tests. Any suggestions?

    Could you please suggest me a forum/group where I could log these issues?



Leave a Comment