Вышла Selenide 3.0

Вышла Selenide 3.0

Большой предновогодний рефакторинг
30.11.15

Привет!

Наконец-то мы выпустили Selenide 3.0. Уффф. Свершилось.

Внимание, версия 3.0 - это полный апгрейдец, то есть кое-что может перестать работать.

Не пугайтесь, если вы использовали только публичный API и не использовали @Deprecated методы, то для вас ничего не изменится. А если лезли в кишки, то читайте внимательно.

Исторический экскурс

Версия Selenide 1.0 была создана в 2011 году в казематах Codeborne и широко не рекламировалась. Примерно год Selenide мариновался и зрел. Мы пробовали использовать его в разных проектах - на Java, Scala, Groovy. Каждый раз обнаруживали, что API опять неудобен и требует доработок. :)

Наконец, в марте 2013 мы поехали в Киев на конференцию SeleniumCamp и к этому событию выпустили версию Selenide 2.0. В ней мы повыкидывали весь хлам и оставили только новый API. Этот момент можно считать днём рождения “публичной” версии Selenide. На тот момент в классе SelenideElement было всего-то с десяток методов. Кстати, сначала он назывался ShouldableWebElement. :)

С этого момента вышло 25 версий Selenide, в ней появилось множество новых функций и своё legacy, свои @Deprecated методы. Назрели перемены.

Поэтому наконец мы собрались с силами и выпустили Selenide 3.0

Новые функции в Selenide 3.0

Функция всего одна - метод Selenide.updateHash(). Она полезна при тестировании аяксовских приложений, которые реагируют на изменение “#” в URL. Метод updateHash() меняет “#bla-bla” в URL, не перезагружая всю страницу. Пример использования здесь.

Спасибо @fabienbancharel за pull request #254

Обновили зависимости

  • обновились до Sizzle 2.2.1
  • обновились до Guava 19.0
  • обновились до TestNG 6.9.10

Опять же, это касается только тех, кто использует соответствующие функции и библиотеки.

Большой рефакторинг

  • Мы нещадно порефакторили класс AbstractSelenideElement. Теперь вместо одного большого класса у нас будет много маленьких классов (в пакете com.codeborne.com.commands), отвечающих каждый за свою задачу.
  • Вы можете легко переопределять любой из методов SelenideElement.
  • И вы даже можете добавлять свои методы в дополнение к стандартным методам Selenide и Selenium.

Подробнее об этом будет отдельный пост, но пример можно подсмотреть в тестах самого Selenide.

Спасибо Якову Крамаренко за идеи и ночные дискуссии.

Большая чистка

Как мы предупреждали в предыдущем анонсе, мы подчистили старый хлам. А именно:

  • Удалили устаревшие условия:
    • notPresent -> используйте $.shouldNot(exist) или $.shouldNotBe(present).
    • hasOptions -> Используйте $.selectOption() или $.selectOptionByValue().
    • options -> Используйте $.selectOption() или $.selectOptionByValue().
    • hasNotClass -> Используйте $.shouldNotHave(cssClass("abc"))
  • Удалили класс JQuery
  • Удалили класс PrettyReportCreator (используйте TextReport для JUnit или TestNG)
  • Удалили устаревшие методы
    • Selenide.switchToWindow(title) -> используйте switchTo().window(title)
    • Selenide.switchToWindow(index) -> используйте switchTo().window(index)
  • Удалили устаревшие методы
    • WebDriverRunner.ie() -> используйте WebDriverRunner.isIE()
    • WebDriverRunner.htmlUnit() -> используйте WebDriverRunner.isHtmlUnit()
    • WebDriverRunner.phantomjs() -> используйте WebDriverRunner.isPhantomjs()
    • WebDriverRunner.takeScreenShot() -> используйте Screenshots.takeScreenShot()
  • Удалили устаревшие методы
    • $.should*(String message, Condition condition) -> используйте $.should*(condition.because(message))
  • Удалили класс class com.codeborne.selenide.impl.Quotes, потому что он переехал в Selenium Webdriver (теперь это org.openqa.selenium.support.ui.Quotes)

Смело обращайтесь, если у вас всё-таки что-то сломалось.

Будем вместе решать, где исправлять! Мы к этому готовы.

Новости


Ну и с наступающим вас!

Быстрых и эффективных тестов! Пусть селекторы селектяцца, сервисы мочацца, базы данных инмеморяцца, а разработчики юнит-тестяцца.


Андрей Солнцев

ru.selenide.org

30.11.15