Mozilla Firefox browser’s versions greater than 47.0 were not compatible with Selenium WebDriver 2.53.0 or 2.53.1 that means Firefox browsers version after 47.0 can’t be used in Selenium without any drivers. As of version 3.0, the Selenium uses a driver to form a link with Firefox browser. This driver is known as Gecko Driver.
Before starting with the GeckoDriver you need to understand what is GeckoDriver, why it is required in Selenium WebDriver? Or how can it be used in Selenium? Let us start with the very basics.
What is a Web Browser Engine and What is Gecko Driver?
Web browser engine is a software program that is used to control and enter the content such as HTML, CSS, XML, images etc.
On the browser and therefore it is also known as layout engine or rendering engine. It is a component of browsers and helps in displaying web-content.
Gecko is a web browser engine which is developed by Mozilla Foundation and is written in C++. It is an open source engine which can be easily available for the user.
GeckoDriver is a proxy which is used to interact with the browsers (such as Firefox) that run the Gecko browser engine. GeckoDriver provides an HTTP API to communicate with Gecko browsers (like Firefox version 47 onwards).
Why Selenium Needs Gecko Driver?
Until Selenium version 2, it had Firefox driver which were used to interact with the Firefox browser (version till 47).
Now, Firefox (with Firefox browser version 48 onwards) has done some changes and due to some security reasons, it does not allow any third party driver to directly interact with the browser.
Also Read : How to Integrate Maven and Jenkins with Selenium
That means the user cannot use Firefox driver of selenium version 2 to interact with the browser version 48 onwards.
Thus, we need Selenium 3 which has marionette drivers and with this user can directly interact with the Firefox browsers using a proxy which is GeckoDriver. Marionette driver is an automation driver for Mozilla’s Gecko engine.
Getting Started with GeckoDriver
This section will help you to install Selenium 3 Jars and GeckoDriver for Firefox browser. Below are the steps which you need to follow:
Step 1: To Add Selenium 3 jars
If you are using Selenium 2 jars, you can easily upgrade it to Selenium 3 Jars by following this link.
www.seleniumhq.org
Click on download option and you will find “Version 3.0.1” to download. Click on the link to download Selenium 3 jar.
Now, copy this jar file by using ‘CTRL + C’ and go to your selenium tool. You will find ‘lib folder’ in test explorer.
Select ‘lib folder’ and right click to open options and select New > Folder and set folder name as ‘selenium3jars’ to make it easily accessible or whatever name you want to use.
You will see, the ‘selenium3jars’ folder is created as a children folder under ‘lib folder’. Use ‘CTRL + V’ to paste selenium 3 jar file that you copied earlier and paste inside ‘selenium3jars folder’.
You’ll see the jar file has been successfully copied to the folder. Next thing you need to do is to add this jar file into your project. You need to select Selenium 3 jar file and right click to open the options palette. Then left click on Build Path > Add to Build Path to add jar file into your project easily.
You’ll see that Selenium 3 jar has been added to Referenced libraries that mean your selenium is ready to execute the tests via the driver.
Step 2: Installing Gecko Driver
To download GeckoDriver for your WebDriver you need to follow this link.
https://github.com/mozilla/geckodriver/releases
If you are running 32bit or 64bit Windows, MACOS, or Linux you can easily download the file which is compatible with your operating system.
You’ll see many versions to download, but you can choose the latest version from the options. You can easily download this zip file to your computer by clicking on the appropriate link.
If you are using windows operating system, you can download either win32.zip or win64.zip and if you are using MAC operating system then you can choose macos.tar.zip.
After downloading the zip file you can simply extract it in your preferred location and then copy the GeckoDriver.exe file using ‘CTRL + C’.
Again, you have to follow the same procedure to copy this file in the ‘lib folder’.
Go to Selenium and select the lib directory from the test explorer. Again, right-click to open option palette then left click on New > Folder to create a new folder.
Then set the name as ‘geckodriver’ or any other name which is easier for you to recognize and click ‘Finish’. Then you have to add a GeckoDriver.exe file into the folder you have just created.
After adding a geckodriver.exe file to a folder, the next step is to use the following syntax to show the exact location of the executable file.
Syntax
System.setProperty(“webdriver.gecko.driver”, ”location of gecko driver executable”); |
You need to enter the exact location of the executable file in the above syntax. To see the location of your file, you can select a geckodriver.exe file from the folder and right click to open the options palette. Then left click on the properties to open details.
Select the location and copy all. Use this location address to enter this address in the syntax. For instance:
System.setProperty(“webdriver gecko driver”, “C:/Users/raghav/Desktop/Tools/Eclipse/Selenium/SeleniumTest/lib/geckodriver/geckodriver.exe”); |
If you find it difficult to add the location manually or showing any unwanted errors, you can also use an alternative method to add an executable file to your project.
Go to your computer and search the above location in the file explorer. Then copy the executable file from the downloaded folder to the current address location.
Left click and drag the executable file from the download folder to the location of the searched folder. The dialogue box will appear saying to replace it or not. Click on replace button and copy the .exe file to the folder.
Step 3: Adding Latest Version of Firefox Browser
Download the latest version of Firefox by following this link
https://filehippo.com/download_firefox/
In the next step, you need to add the syntax and also the location of this browser.
Syntax
System.setProperty(“webdriver.Firefox.bin”, “Location of Firefox exe”); |
Again, you need to enter this syntax in your selenium tool and also the exact location of the Firefox.exe file.
To know the exact address of the .exe file you can select firefox.exe and right click to open option palette. Then left click on properties to know the location.
Copy the location and enter this address in the syntax. For instance:
System.setProperty(“webdriver.Firefox.bin”, “C:\Program Files\Mozilla Firefox\firefox.exe”); |
Use of Gecko Driver to Launch Firefox Browser
import org.openqa.selenium.WebDriver;[] public class FirstSeleniumTest { public static void main(String[] args) { System.setProperty(“webdriver gecko driver”, “C:/Users/raghav/Desktop/Tools/Eclipse/Selenium/SeleniumTest/lib/geckodriver/geckodriver.exe”); System.setProperty(“webdriver.Firefox.bin”, “C:\Program Files\Mozilla Firefox\firefox.exe”); WebDriver driver = new FirefoxDriver(); driver.get(Http://www.google.com/); |
This code is used to generate a test for Firefox browser when executed. It will open the Firefox browser and go to the link which is specified in the code.
In this test, the Firefox will open selenium.org website and after successful loading of the file, the test will close the Firefox browser and execution will be completed.
You need to remember, if you want to move your project to a new location, the current address which you have specified in order to add Firefox.exe and geckodriver.exe will not run.
You need to specify their location again if you wish to move your project location.
Understanding the Code
1. Import org.openqa.selenium.WebDriver: This syntax is used to import every reference which is needed for the WebDriver This WebDriver is later needed to represent the new browser.
2. setProperty: This syntax is used to set the system property to have some value. The browser does not have its own inbuilt server which can run the automation code. Therefore, System.setProperty is needed for the browser to set a respective path.
3. WebDriver driver = new FirefoxDriver(): This syntax is generally an interface which contains methods defined by the user to perform on the Firefox browser.
4. get(http://www.google.com): This syntax will lead the browser to go to the specified link and open it.
Additional Tips:
- Always run automation on a separate browser version
- Use selenium 3 with latest (stable) version of Firefox
- Have Java 8 or higher for Selenium 3