title: Difference between webdriver.firefox.marionette & webdriver.gecko.driver
body: <p>I am now learning Selenium and have met a problem.</p>
  
  <p>I am aware that Selenium supported old Firefox version by default without a driver. And for recent versions of Firefox, we have to download the driver and define it using <code>System.setProperty</code>.</p>
  
  <p>According to this <a href="http://seleniumsimplified.com/2016/04/how-to-use-the-firefox-marionette-driver/" rel="noreferrer">link</a>, for Firefox 45 and 46, start driver code could look like this: </p>
  
  <pre><code>WebDriver driver = new FirefoxDriver();
  </code></pre>
  
  <p>My Firefox is version 45.5.1., but above code still won't work. So according to this <a href="http://www.guru99.com/first-webdriver-script.html" rel="noreferrer">link</a>, I have added:</p>
  
  <p><code>System.setProperty("webdriver.firefox.marionette","C:\\geckodriver.exe");</code></p>
  
  <p>And it worked. </p>
  
  <p>Then I realized that I haven't installed <code>geckodriver.exe</code> on my computer. To see how it goes, I have changed to the code below:</p>
  
  <pre><code>System.setProperty("webdriver.firefox.marionette","");
  </code></pre>
  
  <p>It still works. </p>
  
  <p>So, here comes my first problem: What happened? I am sure that no <code>geckodriver.exe</code> exists in my environment. If no location has been pointed, then why should I have to set property?</p>
  
  <p>Also, I have seen code like:</p>
  
  <pre><code>System.setProperty("webdriver.gecko.driver", "/tools/marionette/wires.exe");
  </code></pre>
  
  <p>My second question is that what is the difference between <code>webdriver.gecko.driver</code>  and <code>webdriver.firefox.marionette</code> or <code>wires.exe</code>and <code>geckodriver.exe</code>?</p>