Селен является широко используемым инструментом для автоматического тестирования браузера. Быть рамкой с открытым исходным кодом позволил селена быть совместимым с несколькими фреймворками автоматизации тестирования для разных языков программирования, и если мы говорим о Автоматизация тестирования с селенами И JavaScript, есть определенная структура, которая никогда не перестает привлечь внимание, и это Nightwatch.js. Вот почему я решил придумать учебник Nightwatch.js для начинающих.
В этом сообщении мы глубоко погрузимся в пошаговый учебник Nightwatch JS, чтобы выполнить тестирование с селенами и JavaScript для Автоматическое тестирование браузера Анкет Мы рассмотрим, как мы можем установить и настроить Nightwatch JS и рассмотрим подробности о его конфигурации и важных файлах и структуре папок. Позже мы также рассмотрим выполнение нашего первого сценария автоматизации тестирования Nightwatch.js и какие проблемы, с которыми мы могли бы столкнуться, наряду с их резолюциями. Давайте начнем с этого учебника Nightwatch.js для начинающих с базовым введением.
Что такое NightWatch.js?
Powered By node.js, NightWatch.js-это программа автоматического тестирования с открытым исходным кодом, которая направлена на предоставление полных решений E2E (End to End) для автоматизации тестирования с помощью селена JavaScript для веб-приложений, приложений браузеров и веб-сайтов. Эта структура зависит от селена и предоставляет несколько команд и утверждений в рамках для выполнения операций в элементах DOM. Внутренне использует мощный API W3C Webdriver или Selenium Webdriver и упрощает написание конец до конца Автоматические тесты в node.js и без особых усилий устанавливается для непрерывной интеграции.
Почему Nightwatch.js так популярен?
Прежде чем мы глубоко погрузимся в выполнение тестовых сценариев в этом учебном пособии Nightwatch.js для начинающих. Важно понять причины популярности Nightwatch.js. Nightwatch.js облегчает тестирование функционального браузера конечного до конца в среде Pure Node.js, которая позволяет тестировать веб -приложения, независимые от стороннего программного обеспечения. Ключевой целью легких и надежных автоматизированных структур тестирования, таких как Nightwatch.js, является включение единого интегрированного решения для тестирования приложений. Поскольку Nightwatch JS построен на node.js, он имеет некоторые серьезные преимущества по сравнению с любыми другими Инструмент тестирования автоматизации селена . Этот автоматизированный тестирование браузера, основанное на Nightwatch.js, устраняет фактор зависимости от стороннего программного обеспечения, что повышает целостность данных среди различных системных компонентов.
Nightwatch JS предоставляет следующие функции коробки:
➝ В построенном испытательном бегуне: Он поставляется с встроенным набором тестов командной строки с поддержкой Grunt для выполнения автоматических тестов.
➝ Стратегия тестирования: Он имеет эту функцию для эффективного выполнения тестов и может быть выполнена во многих отношениях, таких как параллелли, последовательно или в группах, и теги.
➝ Облачные сервисы: Хорошая поддержка тестирования браузера с селенам JavaScript путем предоставления интеграции с облачными поставщиками тестирования селена, такими как LambDatest.
➝ Сервер селена: Возможность автоматического управления автономным сервером селена со встроенной отчетностью JUNIT XML.
➝ Утверждения, CSS и XPath: Несколько команд и утверждений для операций DOM, CSS и селекторов XPath и могут использоваться для идентификации элементов на странице. Это делает структуру гибкой и простым в расширении, особенно при внедрении команд и утверждений, специфичных для приложения.
➝ Непрерывная интеграция: Он предлагает хорошую поддержку для непрерывной интеграции и, следовательно, может использоваться для интеграции тестов с системами непрерывной обработки сборки, таких как Jenkins, TeamCity и т. Д., А также помогает разработчикам в постоянном строительстве и тестировании программного обеспечения.
Помимо всех вышеперечисленных функций, которые он предоставляет, он популярен для чистого и простого синтаксиса, что облегчает эффективное и быстрое написание тестов, только используя только использование Node.js Селекторы CSS и локатор XPath в селене
Как работает Nightwatch JS?
Nightwatch сообщает по протоколу API спокойного, который определяется W3C Webdriver API. Он нуждается в RESTFUL HTTP API с сервером Selenium JavaScript WebDriver.
Чтобы выполнить любую операцию, то есть команду или утверждение, Nightwatch обычно требует отправки минимум двух запросов. Это работает следующим образом:
- Первый запрос обнаруживает необходимый элемент с заданным выражением XPath или селектором CSS.
- Второй запрос берет элемент и выполняет фактическую работу команды или утверждения.
Установка и предпосылки для NightWatch.js
Есть некоторые основные предпосылки, которые необходимы для начала работы с этим учебником Nightwatch JS для тестирования с Selenium и JavaScript.
- Node.js: Nightwatch Module строится поверх узла.
- Диспетчер пакетов узлов (NPM): После установки Node.js диспетчер пакетов узла, т. Е. NPM может быть использован для установки пакета, которая является самой большой экосистемой пакетов. Теперь, чтобы установить последнюю версию, используя инструмент командной строки NPM, выполняется команда ниже (здесь ‘G’ предназначен для установки глобально):
$ npm install -g nightwatch
Приведенная ниже команда поместит исполняемый файл Nightwatch (‘–save-dev’) в нашей папке ./node_modules/.bin
$ npm install --save-dev nightwatch
- Java – SDK: Selenium требует Java для своего удаленного сервера селена. Поскольку Nightwatch полагается на API Selenium Webdriver, а также требуется сервер Selenium webdriver, поэтому также необходимо установить комплект для разработки Java (JDK 7+) в систему и настроить среду Java.
- Сервер селена: Требуется отдельный пакет сервера Selenium, который можно загрузить со страницы загрузки Selenium. После загрузки его необходимо поместить в папку Bin проекта, а сервер Selenium можно начать с помощью команды:
selenium-server-standalone-{version}.jar
- Chrome Driver: Наконец, для этого требуется драйвер Chrome, который является автономным сервером, который реализует протокол W3C веб -драйвера для хрома. Этот исполняемый файл также должен быть размещен в той же папке бина.
$ npm install --save-dev chromedriver
Настройка и настройка NightWatch.js
Теперь, когда мы подробно рассмотрели основы, сейчас пришло время глубоко погрузиться в тестирование автоматизации с селенами и JavaScript в этом учебном пособии Nightwatch.js для начинающих. Nightwatch.js предлагает встроенный тестовый бегун, который ожидает пройти файл конфигурации JSON. Файл конфигурации по умолчанию Nightwatch.json который должен присутствовать в корневом каталоге проекта. В качестве альтернативы Nightwatch.conf.js Файл конфигурации также может быть использован и будет загружен из корневого каталога проекта.
Примечание: Если оба файла конфигурации присутствуют в каталоге, Nightwatch.conf.js дается приоритет, поскольку он дает нам немного большую гибкость и может иметь комментарии в файле.
Вы даже можете объявить конкретные данные тестирования в этом файле конфигурации, такие как тестовые среды, настройки специфики для селена и т. Д. Вот как Nightwatch.json Файл конфигурации выглядит как для тестирования с селенами и JavaScript.
{ "src_folders" : ["tests"], "output_folder" : "reports", "custom_commands_path" : "", "custom_assertions_path" : "", "page_objects_path" : "", "globals_path" : "", "test_workers": { "enabled": true, "workers": "auto" }, "selenium" : { "start_process" : true, "server_path" : "node_modules/selenium-standalone/.selenium/selenium-server/", "log_path" : "./reports", "host": "127.0.0.1", "port" : 4444, "cli_args" : { "webdriver.chrome.driver" : "", "webdriver.gecko.driver" : "", "webdriver.edge.driver" : "" } }, "test_settings" : { "default" : { "launch_url" : "http://localhost", "selenium_port" : 4444, "selenium_host" : "localhost", "silent": true, "screenshots" : { "enabled" : false, "path" : "" }, "desiredCapabilities": { "browserName": "firefox", "marionette": true, "javascriptEnabled": true, "acceptSslCerts": true } }, "chrome" : { "desiredCapabilities": { "browserName": "chrome" } }, "edge" : { "desiredCapabilities": { "browserName": "MicrosoftEdge" } } } }
Давайте внимательно посмотрим на структуру файла конфигурации Nightwatch.json.
- src_folders: Это каталог указывает местоположение, которое содержит тестовые комплексы
- папки вывода: Это каталог указывает местоположение, которое содержит и сохраняет отчеты тестирования, то есть файлы отчетов JUNIT, отчеты XML, журналы тестирования, журналы селена, скриншоты, журналы видео, журналы сети и т. Д.
- Globals_path: Это указывает на путь файла, где инициализируются все глобальные параметры, используемые в наборе тестирования. Они загружаются и представлены в тестах как глобальное свойство, а также могут быть изменены в среде test_settings.
- test_workers: Это свойство определяет, хотим ли мы запустить тестовые люксы параллельно. Если включено в соответствии с True, это указывает на то, что параллелизация разрешена для стратегии тестирования.
- page_objects_path: Это указывает на местоположение, в котором должен быть загружен файл объекта страницы.
- Селен: Это содержит всю информацию и настройку, связанную с конфигурацией сервера селена. Кроме того, он содержит Server_path и Webdriver.chrome.driver, который указывает путь к серверу Selenium и драйвере Chrome соответственно. Кроме того, если параметр start_process установлен на True, он указывает на сервер селена для автоматического запуска.
- test_settings: Это содержит всю важную информацию, связанную с тестами и опциями для их настройки. Это позволяет нам определять и настраивать тестовые среды.
Выполнение первого скрипта на локальной настройке селена Webdriver
Мы начнем тестирование автоматизации в учебнике Nightwatch.js для начинающих с примера, в котором тестовый скрипт, который мы собираемся выполнить, будет искать Nightwatch в Google, а затем проверить документацию Nightwatch JS на веб -сайте.
module.exports = { 'NW test on Google' : function (client) { client .url('http://www.google.com') .waitForElementVisible('body', 1000) .assert.title('Google') .assert.visible('input[type=text]') .setValue('input[type=text]', 'Nightwatch JS') .waitForElementVisible('button[name=btnG]', 1000) .click('button[name=btnG]') .pause(1000) .assert.containsText('ol#rso li:first-child', 'Nightwatch.js | Node.js powered End-to-End testing framework') .end() } }
Мы можем свободно изменить Nightwatch.json Файл конфигурации и файл глобального модуля, т.е. Nightwatch.globals.js В соответствии с нашими потребностями, но это должно выглядеть что -то похожее на приведенный ниже файл.
{ "src_folders" : ["./tests"], "output_folder" : "./reports", "globals_path" : "nightwatch.globals.js", "test_workers": { "enabled": true, "workers": "auto" }, "selenium" : { "start_process" : true, "server_path" : "./node_modules/selenium-server-standalone-jar/jar/selenium-server-standalone-3.141.59.jar", "log_path" : "nw/logs", "host" : "127.0.0.1", "port" : 4444, "cli_args" : { "webdriver.chrome.driver" : "./node_modules/chromedriver/bin/chromedriver", "webdriver.ie.driver" : "" } }, "test_settings" : { "default" : { "launch_url" : "http://google.com", "selenium_port" : 4444, "selenium_host" : "localhost", "silent": true, "screenshots" : { "enabled" : true, "path" : "" }, "desiredCapabilities": { "browserName": "chrome", "javascriptEnabled": true, "acceptSslCerts": true } }, "french" : { "launch_url" : "http://google.fr", "desiredCapabilities": { "browserName": "firefox", "javascriptEnabled": true, "acceptSslCerts": true } } } }
Важно добавить раздел ниже в файле Package.json для выполнения тестов папка
scripts": { "test": "./node_modules/.bin/nightwatch -e firefox,edge,safari test" },
Последнее, что мы должны сделать, это выполнить тесты из базового каталога проекта, используя команду:
NPM Тест
Эта команда с проверкой тестов и зависимостей, а затем выполните тестовый набор, который откроет Chrome, а затем Google данной строки поиска. Ниже приведен скриншот выполнения теста, который отображает результат поиска в Google.
Параллельное тестирование с Nightwatch.js в локальном селене Webdriver
Мы сделали нашу конфигурацию для выполнения тестов параллельно, позволяя Test_workers в True. Таким образом, мы просто обязаны добавить один новый тест в тестовую папку, и структура выполнит оба теста параллельно.
Второй тест будет искать node.js в Google и проверить документацию Node.js.
module.exports = { 'NJS test on Google' : function (client) { client .url('http://www.google.com') .waitForElementVisible('body', 1000) .assert.title('Google') .assert.visible('input[type=text]') .setValue('input[type=text]', 'node.js') .waitForElementVisible('button[name=btnG]', 1000) .click('button[name=btnG]') .pause(1000) .assert.containsText('ol#rso li:first-child', 'Node.js') .end() } }
Теперь мы заметим, что два разных теста будут выполнены одновременно в двух разных браузерах Chrome. Ниже приведен скриншот выполнения теста, который отображает результат поиска в Google.
Проблемы, связанные с настройкой структуры инфраструктуры для автоматического тестирования
Selenium руководит рынком тестирования веб -автоматизации, предлагая большую поддержку для тестирования структур и автоматического тестирования браузеров. Напротив, есть некоторые болевые точки, с которыми может столкнуться тестер автоматизации, используя при использовании Selenium JavaScript Testing Использование внутренней инфраструктуры селена.
Тестовое покрытие во время тестирования поперечного браузера
Когда мы Выполнить тестирование браузера Cross В нашей внутренней настройке веб-приложений мы склонны устранять любую из проблем с пользовательским интерфейсом и можем внести определенные изменения, если это необходимо, а затем перенести код в живой настройке для веб-трафика. Все это нормально, но одна проблема, которая возникает, – это испытательный охват. Это происходит главным образом потому, что тестирование может проводиться только в браузерах, которые установлены локально в системе. Существует необходимость провести тест во всех важных браузерах для успешных Cross Browser Testing Анкет Иногда для определенного набора пользователей и операционных систем также требуется тестирование на некоторых старых браузерах или версиях браузеров. Таким образом, вам необходимо проверить различные комбинации браузеров и операционных систем, и это невозможно с местной инфраструктурой селена.
Стоимость понесена во время настройки местной инфраструктуры
При выполнении определенных автоматических тестов всегда есть стоимость инфраструктуры и при наличии местной настройки селена.
- Существует необходимость настройки отдельной тестовой среды для выполнения всех тестовых случаев.
- Требуются различные типы устройств, такие как настольный компьютер, мобильные устройства, планшеты и т. Д., И должны быть частью стратегии тестирования.
- Настройка лаборатории устройства со всеми необходимыми устройствами также может быть инвестирована в Но это не хороший выбор для стартапов или небольших организаций, так как они могут воздерживаться от огромных инвестиций вначале.
- Поскольку автоматический тест может увеличиваться в числе на этапе тестирования, поэтому он требует, чтобы система была достаточно масштабируемой для обработки этого сценария.
В качестве альтернативы, виртуальная машина или симулятор могут использоваться для выполнения тестирования автоматизации в локальной установке для размещенных веб-применений, но они снова требуют надлежащего обслуживания, влияют на производительность системы и требуют много времени.
Почему облачная селен сетка-хороший призыв?
Когда дело доходит до автоматизированного тестирования браузера, то облачная сетка Selenium является хорошим вызовом. Облачная инфраструктура поможет вам с доступом к сотням браузеров + комбинаций операционной системы, размещенных на облачном сервере поставщика. Таким образом, вы можете быть свободны от хлопот поддержания своей селена, когда вы можете запустить свой тест с нулевым временем. Еще одним преимуществом использования облака тестирования является то, что оно предоставляет адаптивную среду, которая уже настроена на Frameworks, чтобы пользователи могли выполнять тесты, используя любую структуру по своему выбору в соответствии с требованием.
Кроме того, облако тестирования очень масштабируемое и дает нам привилегию использовать инфраструктуру в соответствии с необходимым для проведения любого количества тестов параллельно или в то же время. Следовательно, при принятии стратегии облачного тестирования есть только необходимость изменения ваших тестовых сценариев, но настройка инфраструктуры, используемая для выполнения тестов, остается прежней.
На какую облачную селене селен вы должны выбрать?
LambDatest доверяет 100 000 компаний по всему миру как надежный онлайн селен сетка Поставщик, чтобы удовлетворить свои потребности в тестировании поперечного браузера. Используя LambDatest, вы можете выполнить оба автоматизированного тестирования браузера с облачной сеткой Selenium из 2000+ реальных браузеров как для мобильных, так и для настольных компьютеров, чтобы помочь вам получить максимальное тестовое покрытие во время автоматического тестирования браузера.
Наша сетка Selenium позволяет вам выполнять сценарии тестирования автоматизации в селене на различных платформах программирования, таких как Java, JavaScript, PHP, Python, Ruby, C# и другие языки, которые предоставляют привязки с селенами.
Вы также можете интегрироваться с различными инструментами CI/CD, такими как Jenkins, Travis CI и многое другое для Непрерывное тестирование в DevOps Анкет
Вы можете даже использовать Параллельное тестирование с селеном Автоматизация тестирования, наряду с нашим открытым Selenium API, чтобы помочь вам извлечь отчеты об испытаниях вашего выполнения сценария селена над LambDatest, без труда. Давайте попробуем выполнить приведенный выше тестовый пример, используя удаленный WebDriver для LambDatest Selenium Grid.
Выполнить скрипт Nightwatch.js с помощью удаленной селена сетки
Выполнение тестовых сценариев на Lambdatest Selenium Grid с Nightwatch.js довольно проста и простой и будет в центре внимания дальнейших разделов в этом учебнике Nightwatch.js для тестирования автоматизации с селенами и JavaScript. Мы можем использовать наш существующий локальный тестовый скрипт и файлы конфигурации, изменив несколько строк кода. Чтобы начать первым, нам нужно было бы вызвать удаленное Webdriver Selenium вместо нашего предыдущего веб -драйвера локального браузера. Кроме того, с тех пор, как мы используем удаленный веб -драйвер с LambDatest, у нас есть гибкость, чтобы определить среду браузера, в которой мы хотели бы выполнить наши тесты. Мы можем сделать это, передав подробности браузера и окружающей среды в Lambdatest Selenium Grid через класс желаемых возможностей. LambDatest предоставляет нам генератор возможностей для выбора и передачи данных браузера и спецификаций окружающей среды с различными комбинациями на выбор.
Посетите Lambdatest Selenium Желаемые возможности генератора
Таким образом, в нашем случае класс желаемых конфигураций в файле конфигурации NightWatch.json будет выглядеть одинаково, как и ниже:
"desiredCapabilities": { "build" : "Nightwatch-Selenium-Test", "name" : "Nightwatch-Selenium-Test", "platform" : "Windows 10", "browserName" : "Firefox", "version" : "71.0", "selenium_version" : "3.4.0", "geoLocation" : "IN" }
Затем нам также нужно будет сгенерировать наш токен ключа доступа, который похож на секретный ключ для подключения к нашей платформе и выполнить тесты на rambdatest. Этот ключ доступа уникален и может быть скопирован или регенерирован из раздела профиля нашей учетной записи.
В качестве альтернативы, мы также можем получить детали ключа доступа, имени пользователя и концентратора от Автоматизация приборная панель также.
Ниже приведен файл Nightwatch.conf.js, где нам нужно объявить конфигурацию пользователя для ключа доступа, имени пользователя, хоста и порта для теста.
module.exports = (function(settings) { console.log(settings["test_settings"]["default"]["username"]) if (process.env.LT_USERNAME) { settings["test_settings"]["default"]["username"] = process.env.LT_USERNAME; } if (process.env.LT_ACCESS_KEY) { settings["test_settings"]["default"]["access_key"] = process.env.LT_ACCESS_KEY; } if (process.env.SELENIUM_HOST) { settings.selenium.host = process.env.SELENIUM_HOST; } if (process.env.SELENIUM_PORT) { settings.selenium.host = process.env.SELENIUM_PORT; } return settings; })(require('./nightwatch.json'));
Теперь, поскольку мы используем LambDatest, мы хотели бы использовать его и выполнить наши тесты в разных браузерах и операционных системах. Здесь мы будем использовать три разных браузера, то есть Microsoft Edge, Mozilla Firefox и Apple Safari и операционные системы, такие как Windows 10 и MacOS 10.13 Анкет
Таким образом, после внесения необходимых изменений наши окончательные файлы конфигурации будут выглядеть ниже.
{ "src_folders" : ["./tests"], "output_folder" : "./reports", "globals_path" : "nightwatch.globals.js", "test_workers": { "enabled": true, "workers": "auto" }, "selenium" : { "start_process" : false, "server_path" : "", "log_path" : "", "host" : "hub.lambdatest.com", "port" : 80, "cli_args" : { "webdriver.chrome.driver" : "", "webdriver.ie.driver" : "", "webdriver.firefox.profile" : "" } }, "test_settings" : { "default" : { "launch_url" : "http://google.com", "selenium_port" : 80, "selenium_host" : "https://lambdatest.com", "silent": false, "screenshots" : { "enabled" : true, "path" : "" }, "username" : "irohitgoyal", "access_key" : "UZwDAcLTJQpE1Bl23n2CxBspq4NEoLouBXlORVUS3ilzinRt4k", "skip_testcases_on_fail": false, "desiredCapabilities": { "build":"Nightwatch-Selenium--Test", "platform" : "Windows 10", "browserName" : "Chrome", "version" : "78.0", "selenium_version" : "3.13.0", "visual":true, "video":true, "console":true, "geoLocation" : "IN", "chrome.driver" : "78.0", "network":true } }, "chrome": { "desiredCapabilities": { "platform": "Windows 10", "browserName": "chrome", "version": "78.0" } }, "safari" : { "desiredCapabilities": { "platform": "macos 10.13", "browserName": "safari", "version": "11.0" } }, "firefox" : { "desiredCapabilities": { "platform": "win10", "browserName": "firefox", "version": "60" } }, "edge" : { "desiredCapabilities": { "platform": "Windows 10", "browserName": "MicrosoftEdge", "version": "17.0" } }, "french" : { "launch_url" : "http://google.fr", "desiredCapabilities": { "browserName": "firefox", "javascriptEnabled": true, "acceptSslCerts": true } } } }
Теперь важно добавить ниже раздел в классе Scripts в качестве аргументов в файле package.json, чтобы указать желаемые среды возможностей, которые мы хотели бы, чтобы наши тесты выполнялись.
scripts": { "test": "./node_modules/.bin/nightwatch -e firefox,edge,safari test" },
Последнее, что мы должны сделать, это выполнить тесты из базового каталога проекта, используя команду: NPM Тест
Эта команда с проверкой тестов и зависимостей, а затем выполняет тестовый набор, который запустит наши тесты и откроет браузеры Firefox и Safari в указанной среде, а затем Google данной строки поиска. Ниже у нас есть скриншот, который показывает наш код Nightwatch, работающий над разными браузерами, используя LambDatest Selenium Grid.
Как вы можете заметить, сценарий проводился параллельно через Mozilla Firefox, Safari, Google Chrome и Edge Browsers. Результаты будут отображаться на интерфейсе командной строки, который мы использовали для выполнения теста, а также будут подробно изучены на интерактивной инструментальной панели автоматизации Lambdatest. Lambdatest Dashboard поможет нам объединить все детали теста, и мы можем просмотреть все наши текстовые журналы, скриншоты и записи видео для всех выполненных наших тестов на селен.
Это все для этого учебника Nightwatch.js
В этом учебном пособии Nightwatch.js для начинающих мы рассмотрели различные аспекты тестирования автоматизации с помощью селена JavaScript. Теперь мы четко понимаем подход к тестированию автоматизации в конечном итоге с Selenium JavaScript с использованием Nightwatch.js. Мы знаем обо всех предпосылках, необходимых для настройки Nightwatch.js. Он быстро автоматизирует весь набор тестирования с минимальной конфигурацией и читается, а также легко обновлять. Лучшая функция, предоставленная Framework Nightwatch.js,-это параллельное тестирование случаев, которые оказываются эффективными. Результаты испытаний могут быть непосредственно считываться из терминала, а также храниться в указанной выходной папке.
На начальном этапе принятие нового подхода к автоматическому тестированию браузера становится камнем преткновения для многих, но использование облачных платформ, таких как лямбдейт, облегчает процесс и позволяет нам использовать все преимущества тестирования автоматизации селена. Как это было для вас учебник Nightwatch.js? Дайте мне знать в разделе комментариев ниже. Счастливого тестирования!
Оригинал: “https://dev.to/ramitd1995/nightwatch-js-tutorial-for-test-automation-beginners-with-examples-1dml”