Changes in Selenium WebDriver 3.1.0, 3.2.0, 3.3.0 and 3.3.1 for Java

I have updated my startUsingSeleniumWebDriver project to handle changes in WebDriver 3.1.0, 3.2.0, 3.3.0 and 3.3.1.

MarionetteDriver removed in version 3.1.0 and above

In version 3.0.1 of Selenium WebDriver I noticed that the MarionetteDriver was marked as deprecated.

The WebDriver team don’t mess about, and in the next version (3.1.0), the MarionetteDriverwas removed.

FirefoxDriver defaults to Marionette/GeckoDriver mode, so if you have been using MarionetteDriver you should change the code to use FirefoxDriver instead.

Skip version 3.3.0

3.3.0 had a Bug in FirefoxOptions method toDesiredCapabilities where the binary path will not be found, so skip this version entirely if you want to specify the path of the firefox executable

This version is outdated – so just don’t use it.

Legacy Firefox Driver Changes

Legacy Firefox works unchanged in 3.1.0 and 3.2.0.

WebDriver 3.3.1 uses System Property not the capability

In 3.3.1 in order to use legacy driver you must set the system property

webdriver.firefox.marionette to false

Property must be set, FirefoxOptions ignores the capability and only uses the system property to determine if marionette should be used or not.

So instead of:

capabilities.setCapability("marionette", false);

Instead, in WebDriver 3.3.1 and above, you need to use system properties to use the legacy driver.

System.setProperty(
          FirefoxDriver.SystemProperty.DRIVER_USE_MARIONETTE,
          "false");

If you set the Firefox Executable then it must be on the same drive as your tests run from

The asUnixPath method in FirefoxOptions converts:

C:\webdrivers\FirefoxPortable\FirefoxPortable.exe

to

/webdrivers/FirefoxPortable/FirefoxPortable.exe

So FirefoxOptions.binaryPath is incorrect, but the capability is still correct.

But the path finding algorithms use the FirefoxOptions.binaryPath.

Because it trims off the driver identifier in Windows the location of the executable has to be on the same drive as the tests are running from e.g. if your tests are running on drive D and the executable is on drive C then the path will be incorrect

I raised an issue against this so you can see if this changes. https://github.com/SeleniumHQ/selenium/issues/3667

Most people don’t do this, I don’t expect it to be a high priority fix. And the workaround is simple – keep the tests and the executable on the same drive.

This entry was posted in Selenium Simplified Blog, WebDriver. Bookmark the permalink.

Leave a Reply

Your email address will not be published. Required fields are marked *