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

26 апреля стандарт W3C WebDriver завершил очередной этап и получил статус W3C Proposed Recommendation.

По правилам W3C каждый стандарт должен пройти четыре уровня зрелости (хотя не каждый из них добирается до последнего):

  • Working Draft -- на этом этапе идёт основная разработка текста стандарта, в этом статусе WebDriver находился с конца 2011 года. Для успешного завершения этого этапа и перехода на следующий группа ревьюеров должна убедиться в том, что текст стандарта достаточно полный, не осталось недоспецифицированных участков. Кроме того, они должны поверить, что этот стандарт может быть реализован, что это технически достижимая цель. В конце января в W3C был отправлен официальный запрос на ревью, всё прошло гладко и WebDriver благополучно получил следующий статус.
  • Candidate Recommendation -- целью этого этапа является демонстрация того, что стандарт действительно может быть реализован. Для этого нужно создать как минимум две работающие реализации, полностью удовлетворяющие стандарту. На эту роль выбраны geckodriver и драйвер для Internet Explorer. Предполагается, что этот этап займёт полгода. По результатам должен быть написан Implementation Report, и если ревьюеры признают его удовлетворительным -- стандарт перейдёт на следующий уровень зрелости.
  • Proposed Recommendation -- с этого момента стандарт можно считать полностью завершённым, для перехода на следующий этап нужно просто соблюсти некоторые бюрократические тонкости -- должно состояться формальное голосование боссов комитета W3C за принятие стандарта, должна быть описана процедура фиксации ошибок в стандарте (конечно, они могут остаться, никто не безгрешен), и после этого наступает последний этап.
  • Recommendation -- в этом статусе стандарт остаётся навсегда. Конечно, позже может быть разработана новая версия, но это уже совсем другая история, которая начинается с самого начала, с Working Draft.

Предполагается, что в течение месяца или двух выйдет еще 3-4 релиза в серии 3.x, после чего будет выпущена версия Selenium 4.0, одновременно с переходом стандарта в следующий статус Recommendation.

Вчера, 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, не потеряв при этом возможности работы со старыми драйверами.

Go to top