Установка и использование NightWatchjs

Материал из AOW

Перейти к: навигация, поиск

Содержание

Что такое Nightwatch?

Nightwatch.js является автоматизированная система тестирования для веб-приложений и веб-сайтов, написано в Node.js и используя API Селен WebDriver.

Это полная автоматизация браузер (из конца в конец) решение, которое ставит своей целью упростить процесс создания непрерывного интеграции и написание автоматизированных тестов.

Принцип действия

Nightwatch работает, посылая HTTP запросы на сервер Selenium с нужными параметрами и интерпретации ответа. Протокол RESTful API определяется Селен JsonWireProtocol. См. ниже для примера процесса для инициализации браузера.

Файл:Nightwatch_operation.png

В большинстве случаев, Nightwatch должен послать по крайней мере две запросы на сервер Selenium, чтобы выполнить команду или assetion, первый из которых запрос, чтобы найти элемент, задающий переключатель CSS (или выражение XPath) и следующий выполнять реальная команда / утверждение о данном элементе.

Selenium

Selenium является очень популярным и всеобъемлющий набор инструментов для автоматизации браузера, первоначально написана для Java но теперь с поддержкой большинства языков программирования.

Основные проекты селена являются:

  • Selenium IDE
  • Selenium Remote Control
  • Selenium WebDriver
  • Selenium Grid

Nightwatchjs использует Selenium WebDriver, в частности, Wire Protocol WebDriver для выполнения задач автоматизации, связанных браузера

Установка Nightwatch

npm install -g nightwatch

Запуск Selenium сервера

Download the latest version of the selenium-server-standalone-{VERSION}.jar file from the Selenium downloads page and place it on the computer with the browser you want to test.

Запуск Selenium Автоматически

Если сервер находится на той же машине, где Nightwatch работает, его можно запустить/остановить непосредственно Nightwatch Test Runner.

Запуск Selenium вручную

Чтобы запустить сервер селена вручную, из каталога с банку выполните следующее:

java -jar selenium-server-standalone-{VERSION}.jar       

Более подробную информацию о запуска сервера Selenium можно найти здесь:

http://code.google.com/p/selenium/wiki/RemoteWebDriverServer

Для просмотра всех опций времени выполнения, запустите предыдущую команду, добавив опцию-помощь:

java -jar selenium-server-standalone-{VERSION}.jar -help

Что бы запустить Selenium сервер с портом 555:

java -jar selenium-server-standalone-{VERSION}.jar -port 555

Использование Nightwatch

Написание тестов

Использование предпочел модель селектора CSS, чтобы найти элементы на странице, Ночной дозор делает его очень легко написать автоматизированных тестов из конца в конец.

Создайте отдельную папку для тестов в проекте, например: tests. Каждый файл внутри него будет загружен в качестве теста на тест Nightwatch запускаться. A базовый тест будет выглядеть следующим образом:

module.exports = {
 "Demo test Google" : function (browser) {
   browser
     .url("http://www.google.com")
     .waitForElementVisible('body', 1000)
     .setValue('input[type=text]', 'nightwatch')
     .waitForElementVisible('button[name=btnG]', 1000)
     .click('button[name=btnG]')
     .pause(1000)
     .assert.containsText('#main', 'The Night Watch')
     .end();
  }
};

Тест может иметь несколько шагов, в случае необходимости:

module.exports = {
 "step one" : function (browser) {
   browser
     .url("http://www.google.com")
     .waitForElementVisible('body', 1000)
     .setValue('input[type=text]', 'nightwatch')
     .waitForElementVisible('button[name=btnG]', 1000)
 },
 
 "step two" : function (browser) {
   browser
     .click('button[name=btnG]')
     .pause(1000)
     .assert.containsText('#main', 'The Night Watch')
     .end();
 }
};

Испытания также можно записать в следующем формате:

this.demoTestGoogle = function (browser) {
 browser
   .url("http://www.google.com")
   .waitForElementVisible('body', 1000)
   .setValue('input[type=text]', 'nightwatch')
   .waitForElementVisible('button[name=btnG]', 1000)
   .click('button[name=btnG]')
   .pause(1000)
   .assert.containsText('#main', 'The Night Watch')
   .end();
};

Использование селекторов XPath

Nightwatch поддерживает XPath селекторов также. Чтобы переключиться на XPath вместо CSS селекторов, как найти стратегии, вызвать метод useXpath(), как показано на примере ниже. To вернуться к CSS, звоните useCss().

this.demoTestGoogle = function (browser) {
 browser
   .useXpath() // every selector now must be xpath
   .click("//tr[@data-recordid]/span[text()='Search Text']")
   .useCss() // we're back to CSS now
   .setValue('input[type=text]', 'nightwatch')
};

Запуск Тестов

Nightwatch включает в себя тест бегун командной строки, которая позволяет легко запускать тесты и получить полезную выход.

Пример использования:

$ ./nightwatch -t tests/demotest.js

Если у вас установлен Nightwatch с -g опцию можно пропустить этот. Для использования тестового бегун в вашем проекте просто создать новый файл с именем Nightwatch и добавить следующее:

Для Linux и MacOSX:

#!/usr/bin/env node
require('nightwatch/bin/runner.js');

Затем установите права доступа:

chmod a+x nightwatch

Для Windows: назовите файл nightwatch.js и добавьте следующую строку:

require('nightwatch/bin/runner.js');

Затем запустите следующим образом:

C:\workspace\project> node nightwatch.js

Конфигурация

Тест бегун ожидает файл конфигурации, которые передаются, используя по умолчанию файл nightwatch.json из текущего каталога, если он присутствует. Так давайте создадим один в той же папке, что и предыдущий файл Nightwatch бегун.

Файл nightwatch.json будет выглядеть следующим образом:

{
 "src_folders" : ["examples/tests"],
 "output_folder" : "examples/reports",
 "custom_commands_path" : "",
 "custom_assertions_path" : "",
 "globals_path" : "",
 
 "selenium" : {
   "start_process" : false,
   "server_path" : "",
   "log_path" : "",
   "host" : "127.0.0.1",
   "port" : 4444  
 },
 
 "test_settings" : {
   "default" : {
     "launch_url" : "http://localhost",
     "selenium_port"  : 4444,
     "selenium_host"  : "localhost",
     "silent": true,
     "firefox_profile": false,
     "chrome_driver": "",
     "ie_driver": "",
     "screenshots" : {
       "enabled" : false,
       "path" : ""
     },
     "desiredCapabilities": {
       "browserName": "firefox",
       "javascriptEnabled": true,
       "acceptSslCerts": true
     }
   }
 }
}

Источники

Личные инструменты

Разработка веб-сайтов, автоматизация.
По всем вопросам обращайтесь по телефонам:

+7 495 640 29 90
http://artofweb.ru