В этом разделе публикуются официальные новости: сообщения о выходе новых релизов Selenium, объявления о конференциях, тренингах и иных мероприятиях, посвящённых Selenium, другие официальные объявления.

В этом релизе продолжились трансформации внутренних структур Selenium Grid, но есть также и видимые внешние изменения.

  • Java: полностью прекращена поддержка PhantomJS, в том числе Selenium Server больше не может запускать PhantomJS.
  • Java: Улучшена поддержка Safari, в том числе при удалённом запуске, в том числе для Safari Technology Preview.
  • Java: удалён метод Alert.authenticate и все сопутствующие классы, поддержка аутентификации откладывается на ещё более поздний срок, причём API будет другой, поэтому и удалили, чтобы не создавать ложных ожиданий.
  • Grid: Реализован JMX-интерфейс для мониторинга состояния узлов Selenium Grid. Пока это прототип, можно только наблюдать состояние. Впоследствии в интерфейс будут добавлены операции, позволяющие также управлять узлами грида (перезапускать узел, останавливать сессии, менять таймауты и прочее).
  • Grid: при запуске узла (node) пропускаются все конфигурации, которые не соответствуют текущей платформе, в частности, например, узел на Linux больше не предлагает запускать там Internet Explorer.
  • Grid: для узла теперь можно описывать несколько конфигураций для одного и того же браузера, с разными настройками, в том числе указывая разные пути к браузеру.
  • Grid: при выборе узла теперь учитываются некоторые дополнительные capabilities, в частности "marionette" для Firefox (по умолчанию true) и "technologyPreview" для Safari (по умолчанию false).
  • .Net: изменён API для установки таймаутов, вместо методов теперь используются properties (конечно, это произошло не внезапно, методы были помечены как deprecated уже несколько месяцев).
  • .Net: продолжается движение от использования Capabilities в сторону использования типизированного аналога -- Options, всё больше свойств можно устанавливать через Options, всем настоятельно рекомендуется использовать именно этот способ.
  • Python: тоже продолжается движение от использования Capabilities в сторону использования Options, для всех конструкторов драйверов название параметра для передачи свойств унифицировано, теперь он называется options, параметры с именами firefox_options, chrome_options и ie_options считаются устаревшими и будут вскоре удалены.
  • Python: добавлена поддержка драйвера для псевдобраузера WebKitGTK.
  • Python: прекращена поддержка Python 2.6 и 3.3.
  • Ruby: выполнена чистка API, удалено некоторое количество deprecated классов, методов и параметров методов.

Как обычно исправлены разные старые баги, сделаны новые, так что если что-то не работает -- жалуйтесь, пишите репорты сюда: https://github.com/SeleniumHQ/selenium/issues

 

В этом релизе происходили глубинные трансформации в недрах Selenium Grid, полностью поменялся способ передачи данных для создания новой сессии. Мы надеемся, что это были изменения в лучшую сторону, но могут появиться новые неожиданные баги, будьте бдительны.

О других изменениях:

  • Исправлен баг, который возник ещё в версии 3.0 (!), вернулась возможность указывать путь к исполняемому файлу Firefox в конфигурационном файле Selenium Grid Node.
  • Исправлена ошибка "unrecognized platform name" при запуске в облаках, где используются всякие нетрадиционные названия платформ.
  • JS: удалён самодельный promise-менеджер, теперь нужно использовать стандартный
  • JS: в связи с удалением самодельного promise-менеджера, удалены обёртки для mocha, теперь можно использовать эту библиотеку непосредственно
  • JS: удалена поддержка Opera и PhantomJS
  • JS: удалён класс firefox.Binary, теперь нужно использовать метод firefox.Options#setBinary()
  • JS: в класс firefox.Driver добавлены методы installAddon и uninstallAddon, позволяющие добавлять и удалять расширения браузера на лету (работает только с geckodriver и новыми версиями Firefox)
  • JS: добавлена поддержка команд getRect/setRect, которые заменили getPosition/setPosition и getSize/setSize
  • JS: добавлена поддержка команд fullscreen и minimize
  • JS: удалён модуль testing/assert, теперь нужно использовать какую-нибудь стороннюю библиотеку
  • Java: убрали информационный шум при запуске Firefox в legacy-режиме, логи браузера теперь по умолчанию не показываются, но добавлена настройка, позволяющая их показать.
  • Java: продолжается планомерное уничтожение конструкторов драйверов, настройки переползают либо в DriverOptions либо в DriverService.
  • Python: добавлена поддержка команд minimize и fullscreen
  • Ruby: добавлена опция Firefox::Options#headless!

Ну и конечно в реализациях на всех языках мы постарались улучшить совместимость со стандартом W3C WebDriver, не потеряв при этом возможности работы со старыми драйверами.

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

Изменения в Java

1. Удалены зависимости артефакта selenium-java от драйверов для PhantomJS и HtmlUnit. Причины, правда, разные.

Разработчики PhantomJS объявили о прекращении работы над этим проектом в связи с появлением в Chrome и Firefox так называемых headless-режимов, позволяющих запускать браузер без показа окна, в скрытом виде. Это фактически делает PhantomJS ненужным, тем более, что он построен не на полноценном современном браузерном движке, а на достаточно старой версии движка WebKit.

HtmlUnit тоже не является полноценным браузером, это вообще грубая подделка, но мы его любим не за аутентичность, а за высокую производительность. Драйвер для него жив и здоров, а зависимость от него убрали просто потому, что релизные циклы не совпадают. Поэтому ставьте в своих проектах две зависимости -- от selenium-java и htmlunit-driver (если он вам нужен, конечно) -- и обновляйте их версии независимо.

2. Классы FirefoxOptions, ChromeOptions и их аналоги для других браузеров теперь реализуют интерфейс Capabilities. Это упростило и сделало более элегантной инициализацию драйверов. В частности, можно объект *Options передавать в конструктор удалённого драйвера, например: new RemoteWebDriver(new FirefoxOptions().addPreference("xxx", "yyy").addPreference("aaa", "zzz"))

3. В классы FirefoxOptions и ChromeOptions добавлен метод setHeadless, который, как ясно из названия, позволяет запускать браузеры в headless-режиме.

4. Реализована возможность установки в Firefox дополнений в формате WebExtensions.

Изменения в C#

1. Появилась поддержка .Net Core 2.0, теперь написанные на C# тесты можно запускать не только под Windows. Увы, для этого пришлось кое-чем пожертвовать, подробнее об этом можно почитать в блоге разработчика.

2. Завершён переход на новый W3C-совместимый протокол, так что теперь тесты на C# можно удалённо запускать только на Selenium Server версии 3.5 или новее, а для браузера Chrome требуется версия драйвера 2.31 или новее.

3. Добавлены методы Minimize и FullScreen для окон и GetProperty для элементов, этих команд не было в Selenium 2, но они введены в стандарт W3C WebDriver, так что скоро должны появиться и на других языках тоже.

Изменения в Ruby

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

Изменения в Python

1. Реализован класс IEOptions для конфигурирования параметров запуска драйвера для Internet Explorer.

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

-----

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

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

 

Вслед за релизом 3.5 пришлось выпустить несколько обновлений (последнее из них имеет номер 3.5.3), в которых исправлены критичные баги в Selenium Grid Hub, проскочившие в релиз.

Для пользователей Selenium IDE наступили трудные времена -- он не работает в Firefox 55 и новее...

Что делать?

Установить Firefox ESR 52, в этой версии Selenium IDE пока работает. Extended Support Release (ESR) -- это специальная релизная ветвь с редкими обновлениями для консервативных пользователей. Версия 52 будет существовать в этой ветви до 6 марта 2018 года.

К сожалению, даже эта версия не может установить Selenium IDE с официальной страницы (написано, что она устаревшая), но зато можно пройти по прямой ссылке на файл дополнения (она ведет на тот же самый официальный сайт, никаких подделок), и загруженное расширение успешно установится.

Почему так получилось?

В очередном релизе Selenium 3.5 на поверхности никаких заметных изменений нет. Но зато "под капотом" сервера Selenium появился "режим сквозной передачи запросов (pass through)".

Сервер сейчас должен уметь работать с двумя разными версиями протоколов -- новая, совместимая со стандартом W3C WebDriver, и старая, оставшаяся с достандартных времён. Раньше сервер перекодировал запросы, полученные от клиента, прежде чем передать их дальше по цепочке (от хаба к узлу грида, или от узла грида к браузеру). В режиме pass through он не вмешивается в структуру запроса, до браузера он доходит ровно в том виде, в котором его отправил клиент. Тем самым сервер не вносит никаких возмущений и искажений, за соответствие запросов той или иной версии протокола полную ответственность теперь несут клиентские библиотеки.

С другой стороны, в клиентских библиотеках появился механизм "переговоров" с браузером (точнее говоря, с его драйвером), позволяющий определить, какую версию протокола нужно использовать. Если драйвер готов разговаривать на языке протокола W3C WebDriver -- преимущество отдаётся этому способу. Иначе используется старая версия протокола. При этом, благодаря режиму pass through, переговоры ведутся напрямую с драйвером, а сервер выступает в роли нейтрального посредника.

Все эти штуки, по замыслу разработчиков, должны повысить надёжность работы сервера Selenium и особенно Selenium Grid. Но на всякий случай осталась возможность отключить этот режим и вернуться к старому, с перекодировкой запросов, для этого нужно при запуске сервера указать опцию -enablePassThrough false

Go to top