Новый конструктор для FirefoxDriver (или "релиз 3.4")

Новый конструктор для FirefoxDriver (или "релиз 3.4")

Главное изменение в релизе 3.4 – в Java-версии объявлены устаревшими (deprecated) некоторые конструкторы в классах RemoteWebDriver и FirefoxDriver.

Это означает, что в одном из ближайших релизов (3.5, максимум 3.6) они будут удалены. Если вы использовали эти конструкторы – обновите код, чтобы он не перестал компилироваться и выполняться при выходе следующих релизов.

Во-первых, устаревшими объявлены конструкторы, которые на вход принимали два объекта типа Capabilities – так называемые “желаемые” (desired) и “требуемые” (required) свойства запускаемого драйвера. Скорее всего вы их не использовали, потому что семантика “требуемых” свойств плохо определена и нигде не документирована.

Во-вторых, в классе FirefoxDriver устаревшими объявлены три конструктора, от удаления которых вы можете пострадать:

public FirefoxDriver(FirefoxBinary binary)
public FirefoxDriver(FirefoxBinary binary, FirefoxProfile profile)
public FirefoxDriver(FirefoxBinary binary, FirefoxProfile profile, Capabilities capabilities)

В следующем релизе будет объявлен устаревшим ещё один конструктор (о нем просто забыли):

public FirefoxDriver(FirefoxProfile profile)

Взамен удаляемых конструкторов добавлен новый:

public FirefoxDriver(FirefoxOptions options)

На вход он принимает объект типа FirefoxOptions, в него упаковывается информация о свойствах драйвера и браузера, которые раньше передавались как отдельные параметры конструктора.

Так, старый код инициализации драйвера

FirefoxBinary binary = new FirefoxBinary(
  new File("c:/Program Files/Nightly/firefox.exe"));
binary.addCommandLineOptions("-console");
FirefoxProfile profile = new FirefoxProfile();
profile.setPreference("browser.cache.disk.enable", false);
DesiredCapabilities capabilities = new DesiredCapabilities(
  ImmutableMap.of("pageLoadStrategy", "eager"));
WebDriver driver = new FirefoxDriver(binary, profile, capabilities);

превратится в такой:

FirefoxOptions options = new FirefoxOptions()
  .setBinary("c:/Program Files/Nightly/firefox.exe")
  .addArguments("-console")
  .addPreference("browser.cache.disk.enable", false)
  .addCapabilities(new DesiredCapabilities(
    ImmutableMap.of("pageLoadStrategy", "eager")));
WebDriver driver = new FirefoxDriver(options);

Не ждите следующего релиза, исправьте свой код прямо сейчас!