Добрый день, коллеги, обращается к Вам совсем новичек в автоматизации в общем и в работе с Селениумом в частности. Но я усердно учился (во многом разобрался, но пока, в большинстве своем - теоретически), планировал начать автоматизацию на проекте на java. Но не тут то было. Получил задачу разобраться с реализацией всего этого с помощью WebdriverJS. А теперь собственно проблема: Помогите кто чем может (имеются ввиду ссылки-советы-рекомендации). С джаваскриптом знаком, но очень плохо, буду усиленно вспоминать, что знал, и учить новое. Но за любой совет буду безмерно благодарен.
Warning: WebDriverJS is targeted at developers comfortable with asynchronous programming. Users new to JavaScript may find WebDriverJS difficult to work with.
Я предполагаю, тебе надо искать инфу по работе с JS.
Мне удалось (не без помощи) эту штуку запустить, но теперь (после того как я понял как вебдрайвер работает с джавой), я не могу понять зачем делать все так сложно, кто изачем придумал ТАК реализовать совместимость Вебдрайвера с джаваскриптом:( (это крик души)
А почему вас заставляют работать именно на JavaScript?
Есть уже довольно протоптанные пути с C#/Java/Python/Ruby, в которых и тест фреймворки готовы, и статей в интернетах целая куча.
Работа на платформе NodeJS будет сложнее, по крайней мере, потому, что там нет такого разнообразия инструментов. Ну, и сам JavaScript как язык не так уж и прост в силу того, что там есть подводные камни, о которых необходимо знать.
Я не противник использования JavaScript, а просто хочу предупредить, что некоторые вещи реализуются не лучшим образом.
А почему вас заставляют работать именно на JavaScript?
Потому что посчитали, что нужно чтоб все члены команды имели возможность работать с этими тестами. Джаваскрипт знают все (кроме меня), а остальные языки нет (фронтендщик и я не знаем С#, а я учился в свое время на джаве автоматизировать)
Как раз они написаны в стиле NodeJS – асинхронного событийного сервера. Именно потому так код и выглядит.
Но, зачем вам то эта асинхронная событийность в тестовом коде?
она бы и не нужна, но NodeJS чуть ли ни единственный способ работать с WebdriverJS
Не следует путать стороннюю реализацию https://github.com/Camme/webdriverjs/ с той, которая реализована в рамках проекта Seleniuim http://code.google.com/p/selenium/wiki/WebDriverJs
Тем более, что первая из упомянутых как раз НЕ асинхронная, а блокирующаяся, а вторая действительно полностью асинхронная. Причём дело тут не в событийности, а в том, что она не блокируется на операциях до их "завершения" (что такое "завершение нажатия на кнопку" вообще?)
Для обеспечения асинхронности реализация, которая сделана в Selenium, основана на использовании "промисов", поэтому выглядит с непривычки действительно весьма экзотично :)