java.lang.IllegalStateException: The path to the driver executable must be set by the webdriver.gecko.driver system property

19,831

Solution 1

You have to use System.setProperty not the System.getProperty as follows.

System.setProperty("webdriver.gecko.driver",
                "C:\\Selenium WebDriver\\geckodriver\\geckodriver-v0.17.0-win64\\geckodriver.exe");

Solution 2

I have noticed that you are using wrong syntax, to opening the browser.

Instead of using System.getProperty, You have to use System.setProperty as mentioned below.

System.setProperty("webdriver.gecko.driver", "C:\\Selenium WebDriver\\geckodriver\\geckodriver-v0.17.0-win64\\geckodriver.exe");

For more details on this issue, refer this page.

Share:
19,831
nsCelin
Author by

nsCelin

Updated on June 06, 2022

Comments

  • nsCelin
    nsCelin almost 2 years
    package com.merchantPlatform;
    
    import java.util.concurrent.TimeUnit;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.firefox.FirefoxDriver;
    import org.openqa.selenium.remote.DesiredCapabilities;
    
    public class MerchantPlatformTest {
    
        public static void main(String[] args) {
    
            System.getProperty("webdriver.gecko.driver", "C:\\Selenium WebDriver\\geckodriver\\geckodriver-v0.17.0-win64\\geckodriver.exe");
    
            DesiredCapabilities capabilities = DesiredCapabilities.firefox();
            capabilities.setCapability("marionette", true);
    
            // Initialize WebDriver
            WebDriver driver = new FirefoxDriver(capabilities);
    
             /* This works fine for versions lesser than Selenium 3. For Selenium 3 and higher, it will throw java.lang.IllegalStateException */
    
            // Maximize Window
            driver.manage().window().maximize();
    
            // Wait For Page To Load
            driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
    
            // Navigate to MerchantPlatform URL
            driver.get("http://localhost:52939/");
    
        }
    
    }
    

    Error

    I am getting the below exception with System.getProperty

    Exception in thread "main" java.lang.IllegalStateException: The path to the driver executable must be set by the webdriver.gecko.driver system property; for more information, see https://github.com/mozilla/geckodriver. The latest version can be downloaded from https://github.com/mozilla/geckodriver/releases at com.google.common.base.Preconditions.checkState(Preconditions.java:738) at org.openqa.selenium.remote.service.DriverService.findExecutable(DriverService.java:124) at org.openqa.selenium.firefox.GeckoDriverService.access$100(GeckoDriverService.java:41) at org.openqa.selenium.firefox.GeckoDriverService$Builder.findDefaultExecutable(GeckoDriverService.java:115) at org.openqa.selenium.remote.service.DriverService$Builder.build(DriverService.java:330) at org.openqa.selenium.firefox.FirefoxDriver.toExecutor(FirefoxDriver.java:207) at org.openqa.selenium.firefox.FirefoxDriver.(FirefoxDriver.java:108) at org.openqa.selenium.firefox.FirefoxDriver.(FirefoxDriver.java:137) at com.merchantPlatform.MerchantPlatformTest.main(MerchantPlatformTest.java:20)

  • nsCelin
    nsCelin almost 7 years
    Thanks.. It was setProperty, works fine now.. I tried to mark both your answers correct, but unable to do.. Though I searched a lot for this error, I missed the set part.