Вышел релиз Selenium 3.6

Вышел релиз Selenium 3.6

В отличие от предыдущего релиза, в котором основные изменения были сосредоточены “под капотом”, новый релиз 3.6 содержит несколько крупных хорошо заметных снаружи изменений.

Java

  • Удалены зависимости артефакта selenium-java от драйверов для PhantomJS и HtmlUnit. Причины, правда, разные.
    • Разработчики PhantomJS объявили о прекращении работы над этим проектом в связи с появлением в Chrome и Firefox так называемых headless-режимов, позволяющих запускать браузер без показа окна, в скрытом виде. Это фактически делает PhantomJS ненужным, тем более, что он построен не на полноценном современном браузерном движке, а на достаточно старой версии движка WebKit.
    • HtmlUnit тоже не является полноценным браузером, это вообще грубая подделка, но мы его любим не за аутентичность, а за высокую производительность. Драйвер для него жив и здоров, а зависимость от него убрали просто потому, что релизные циклы не совпадают. Поэтому ставьте в своих проектах две зависимости – от selenium-java и htmlunit-driver (если он вам нужен, конечно) – и обновляйте их версии независимо.
  • Классы FirefoxOptions, ChromeOptions и их аналоги для других браузеров теперь реализуют интерфейс Capabilities. Это упростило и сделало более элегантной инициализацию драйверов. В частности, можно объект класса *Options передавать в конструктор удалённого драйвера:
    new RemoteWebDriver(
      new FirefoxOptions()
        .addPreference("xxx", "yyy")
        .addPreference("aaa", "zzz"))
    
  • В классы FirefoxOptions и ChromeOptions добавлен метод setHeadless, который, как ясно из названия, позволяет запускать браузеры в headless-режиме.
  • Реализована возможность установки в Firefox дополнений в формате WebExtensions.

.Net

  • Появилась поддержка .Net Core 2.0, теперь написанные на C# тесты можно запускать не только под Windows. Увы, для этого пришлось кое-чем пожертвовать, подробнее об этом можно почитать в блоге разработчика.
  • Завершён переход на новый W3C-совместимый протокол, так что теперь тесты на C# можно удалённо запускать только на Selenium Server версии 3.5 или новее, а для браузера Chrome требуется версия драйвера 2.31 или новее.
  • Добавлены методы Minimize и FullScreen для окон и GetProperty для элементов. Этих команд не было в Selenium 2, но они введены в стандарт W3C WebDriver, так что скоро должны появиться и на других языках тоже.

Ruby

  • Драйвер для PhantomJS объявлен deprecated, причины объясняются выше.

Python

  • Реализован класс IEOptions для настройки параметров запуска драйвера для Internet Explorer.
  • Добавлена поддержка нового W3C-совместимого протокола (наконец-то!), так что вскоре можно и здесь ожидать появления новых команд, которые добавлены в стандарте W3C WebDriver.

А также в реализациях на всех языках удалены многочисленные deprecated-методы и исправлена куча багов.

Как видите, изменений много, в том числе интерфейсных, поэтому будьте внимательны, при обновлении возможно появление ошибок компиляции, особенно если вы использовали deprecated-методы. Добавьте в проект зависимости от PhantomJS и HtmlUnit, если они вам нужны. Почистите свой код от использования deprecated-методов, которые вскоре будут удалены.