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

Вчера, 11 марта, вышел "трибьют"-релиз Selenium 3.11 c кодовым названием "Selenium for Workgroups".

Как и следовало ожидать, главные изменения в этом релизе связаны с браузером Internet Explorer и платформой Windows:

  • .Net: реализация PageObjects объявлена устаревшей (deprecated), постепенно она будет удалена из кода Selenium и перенесена в отдельный независимый репозиторий https://github.com/DotNetSeleniumTools/DotNetSeleniumExtras
  • .Net: класс ExpectedConditions объявлен устаревшим (deprecated), он тоже переедет по указанном выше адресу, но вообще-то можно просто использовать лямбда-выражения в качестве условий ожидания
  • .Net: драйвер для PhantomJS объявлен устаревшим (deprecated)
  • .Net: исключения, которые могут быть выброшены командами clear и sendKeys, приведены в соответствие со стандартом W3C WebDriver
  • .Net: иерархия исключений также приведена в соответствие со стандартом W3C WebDriver, добавлены недостающие исключения
  • IE: устранен крэш драйвера при выполнении команды sendKeys с отключенным режимом native events (#5584)
  • IE: улучшена обработка клавиш-модификаторов (Shift, Control, Alt, Meta) при выполнении команды sendKeys
  • IE: правила перемещения указателя мыши приведены в соответствие со стандартом W3C WebDriver, теперь смещение по координатам отсчитывается от центра элемента, а не от левого верхнего угла
  • IE: команды для получения cookies переписаны с использованием нового API, доступного в Windows 8.1 SDK и новее (для старых версий продолжает использоваться старый способ получения cookies)
  • IE: вспомогательный исполняемый файл драйвера IEDriverServer теперь может управлять только одной сессией, для запуска нескольких сессий нужно запускать несколько независимых процессов IEDriverServer (хотя лучше вообще не запускать несколько сессий на одной машине, IE этого не любит, работать будет, но может и закапризничать)
  • Java: удалены методы startClient и stopClient в классе RemoteWebDriver, которые были помечены как устаревшие (deprecated) в релизе 3.6 (это изменение может коснуться тех, кто использовал самодельные расширения класса RemoteWebDriver)
  • Java: удалены свойства SafariOptions.cleanSession (текущий драйвер для Safari всегда запускает новую сессию, это свойство просто игнорируется) и SafariOptions.port (драйвер для Safari автоматически выбирает порт)

 

В очередном релизе Selenium 3.10 наиболее серьёзные изменения произошли в драйвере для Internet Explorer:

  • исправлены проблемы с вводом командой sendKeys неправильных символов при использовании национальных раскладок клавиатуры
  • исправлены проблемы с вводом текста в contenteditable элементы
  • реализована поддержка IPv6 (правда пока только в локальном варианте запуска, потому что в Grid ещё остаются проблемы)
  • улучшена совместимость с .Net Core 2.0
  • улучшена производительность (хотя конечно до других браузеров ему пока всё равно ещё далеко...)

Другие значимые изменения:

  • Grid: улучшено протоколирование, теперь на консоли появляется меньше бесполезных для рядового пользователя сообщений.
  • Grid: исправлена ошибка закрытия потерянных сессий по таймауту.
  • Ruby: реализованы настройки для более удобного запуска Chrome в headless-режиме.
  • Java: класс org.openqa.selenium.support.ui.Duration объявлен устаревшим (deprecated), вместо него рекомендуется использовать java.time.Duration

А также продолжается внутренняя чистка кода, постепенно движемся к выпуску версии 4.0.

Сразу отметим, что реализация на JavaScript совершила скачок в будущее, для неё выпущена версия 4.0.0-alpha.1 и версий в линейке 3.x больше не будет. Список изменений настолько обширный, что я его даже не буду перечислять, лучше посмотреть официальную документацию.

А теперь про другие языки и Selenium Grid:

  • Java: улучшено протоколирование проблем, которые возникают при создании новой сессии, это должно облегчить понимание причин возникающих сбоев
  • Java: для взаимодействия с драйверами и сервером теперь используется OkHttp (но если вдруг возникнут проблемы, есть временная возможность вернуться к старому механизму, для этого нужно установить системное свойство webdriver.http.factory=apache)
  • Java: починили команду, которая снимает скриншот отдельного элемента (правда, пока эту команду поддерживает только geckodriver)
  • .Net: восстановлен атрибут CLSCompliant, который потерялся в предыдущей версии из-за изменения процедуры сборки assembly
  • .Net: удалена проверка наличия двойного дефиса в опциях Firefox, ранее предполагалось, что все опции должны начинаться с "--", но это оказалось неправдой, поэтому ограничение было снято
  • Grid: удалена опция -enablePassthrough, теперь сервер всегда работает в режиме passthrough
  • Grid: исправлена обработка опций -hub, -hubHost и -hubPort, теперь опция -hub имеет наивысший приоритет, как и было заявлено в документации
  • Grid: исправлен баг, который не давал возможности серверу Appium зарегистрироваться на хабе
  • Grid: добавлена опция -enablePlatformVerification, позволяющая отключить проверку совместимости того, совместимы ли capabilities, которые пытается зарегистрировать узел, с текущей платформой
  • Grid: исправлен баг с загрузкой конфигурации узлов с хаба после регистрации, в том числе после повторной регистрации, это особенно важно, если хаб перезапущен с изменёнными настройками, все узлы должны загрузить эти новые настройки

Кроме того, как обычно исправлены разные более мелкие баги, а также проведена работа по оптимизации тестов и процесса сборки, что позволило уменьшить время выполнения регрессионного набора тестов примерно в два раза (с шести часов до трёх).

В этом релизе продолжились трансформации внутренних структур 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-методов, которые вскоре будут удалены.

Go to top