Комментарии 12
Однако не отрицаю, что clojure'вский repl положенный на разные предметные области даёт очень резкий вау-эффект, и экономит кучу времени.
Я сейчас так влюблён в Clojure, что не способен объективно отвечать!
Код теста в примере пока что выглядит как-будто его с Java 1-в-1 переписали, не говоря уж о том, что запуск браузера, логирование и подсчёт результатов — это не обязанность конкретного теста.
На мой вкус этот тест (без потери функционала) должен выглядеть примерно так:
(selenium-test gosuslugi-main-search-form "https://www.gosuslugi.ru/"
(->> ($ ".index-slider-search input")
(type-text "загранпаспорт")
(->>keys Keys/ARROW_DOWN)
(->>keys Keys/ARROW_DOWN)
(->>keys Keys/ENTER))
(is (there ($ ".title_search"))))
В сравнении с чем clojure помогает ускорить написание тестов? Ответа на данный вопрос в статье так и не нашёл. (Половина статьи вообще о самом Selenium, что к тезису про clojure как я понимаю отношения не имеет.)
Императивный стиль, который мифически вбивается кому-то со школы — уже давно не 100 процентно императивный, в большинстве высокоуровневых языков. Много где есть уже функции первого порядка, динамическое программирование и т.д. Может быть когда-то лисп и отличался подобными фичами и действительно имел смысл. Сейчас — все эти фичи как я понимаю уже встроили в более развитые и распространённые языки.
Так зачем нужен clojure и чем он быстрее в написании например JavaScript, Python, Ruby или там Java/Groovy/Scala (все из которых могут похвастаться более привычным синтаксисом, большим обилием документации и инструментов, стабильностью (по сравнению с clojure))?
Пока что такое впечатление что вы изучаете clojure и вам просто интересно изучить что-то новое. Но зачем же вы говорите тогда что оно быстрее? Так и напишите что это всё "для прикола", а не для какой-то эффективности.
>Так зачем нужен clojure и чем он быстрее в написании например JavaScript, Python, Ruby или там Java/Groovy/Scala.
Быстрее в первую очередь — REPL'лом, на него и сделан акцент в статье, к сожалению в статье видимо не удалось ясно показать чем REPL Clojure удобнее остальных REPL присутствующих в других языках. Его преимущество кроется в мелких деталях завязанных на фичах языка — иммутабельность, функциональность, чистые функции и многое другое. Как эти тонкие моменты передать в статье, я не знаю, все это познается на опыте. Если вы сможете сделать подобное сравнение, пусть даже не в пользу clojure, буду рад почитать.
Могу предложить свою либу на Кложе для браузерных тестов. Она не зависит от Селениума, очень простая, уже используется в продакшене. https://github.com/igrishaev/etaoin
Как Clojure помогает ускорить написание Selenium-тестов