Учебники

23) Проверка транспортира

Что такое транспортир?

PROTRACTOR — это инструмент для автоматизации и комплексного тестирования поведения, который играет важную роль в тестировании приложений AngularJS и работает как интегратор решений, объединяя мощные технологии, такие как Selenium, Jasmine, веб-драйвер и т. Д. Цель тестирования Protractor предназначен не только для тестирования приложений AngularJS, но и для написания автоматических регрессионных тестов для обычных веб-приложений.

В этом уроке для начинающих вы узнаете

Зачем нам нужен каркас Protractor?

JavaScript используется практически во всех веб-приложениях. По мере роста приложений JavaScript также увеличивается в размере и сложности. В таком случае для тестировщиков становится трудной задачей протестировать веб-приложение для различных сценариев.

Иногда трудно захватить веб-элементы в приложениях AngularJS с помощью JUnit или Selenium WebDriver.

Protractor — это программа NodeJS, которая написана на JavaScript и работает с Node для идентификации веб-элементов в приложениях AngularJS, а также использует WebDriver для управления браузером с помощью действий пользователя.

Хорошо, теперь давайте обсудим, что такое приложение AngularJS?

Приложения AngularJS — это веб-приложения, которые используют расширенный синтаксис HTML для выражения компонентов веб-приложений. Он в основном используется для динамических веб-приложений. Эти приложения используют меньше и гибкий код по сравнению с обычными веб-приложениями.

Почему мы не можем найти веб-элементы Angular JS с помощью веб-драйвера Normal Selenium?

Приложения Angular JS имеют некоторые дополнительные атрибуты HTML, такие как ng-repeater, ng-controller, ng-model .. и т. Д., Которые не включены в локаторы Selenium. Selenium не может идентифицировать эти веб-элементы с помощью кода Selenium. Итак, Protractor на вершине Selenium может обрабатывать и контролировать эти атрибуты в веб-приложениях.

Транспортир — это комплексная среда тестирования для приложений на базе Angular JS. В то время как большинство сред фокусируются на проведении модульных тестов для приложений Angular JS, Protractor фокусируется на тестировании реальной функциональности приложения.

Прежде чем запустить Protractor, нам нужно установить следующее:

  1. Селен

    Вы можете найти шаги по установке Selenium в следующих ссылках ( https://www.guru99.com/install-selenium-webdriver.html )

  2. NPM (Node.js)

    Установка NodeJS, нам нужно установить NodeJS для установки Protractor. Вы можете найти эти шаги установки по следующей ссылке. ( https://www.guru99.com/download-install-node-js.html )

Установка транспортира

Шаг 1) Откройте командную строку и введите «npm install –g protractor» и нажмите Enter .

Приведенная выше команда загрузит необходимые файлы и установит Protractor в клиентскую систему.

Тестирование транспортира

Шаг 2) Проверьте установку и версию с помощью « Protractor —version ». В случае успеха он покажет версию как на скриншоте ниже. Если нет, выполните шаг 1 снова.

Тестирование транспортира

(Шаги 3 и 4 являются необязательными, но рекомендуется для лучшей практики)

Шаг 3) Обновите диспетчер веб-драйверов. Диспетчер веб-драйверов используется для запуска тестов против углового веб-приложения в определенном браузере. После установки Protractor менеджер веб-драйверов необходимо обновить до последней версии. Это можно сделать, выполнив следующую команду в командной строке.

webdriver-manager update

Тестирование транспортира

Шаг 4) Запустите менеджер веб-драйверов. Этот шаг запускает менеджер веб-драйверов в фоновом режиме и прослушивает любые тесты, которые выполняются через транспортир.

Когда Protractor используется для запуска любого теста, веб-драйвер автоматически загружает и запускает тест в соответствующем браузере. Чтобы запустить диспетчер веб-драйверов, необходимо выполнить следующую команду из командной строки.

webdriver-manager start

Тестирование транспортира

Теперь, если вы перейдете по следующему URL-адресу ( http: // localhost: 4444 / wd / hub / static / resource / hub.html ) в своем браузере, вы фактически увидите, что менеджер веб-драйверов работает в фоновом режиме.

Тестирование транспортира

Пример тестирования приложения AngularJS с использованием Protractor

Для работы Protractor нужны два файла: файл спецификации и файл конфигурации .

  1. Файл конфигурации : этот файл помогает транспортирующим размещать тестовые файлы (specs.js) и общаться с сервером Selenium (Selenium Address). Chrome является браузером по умолчанию для Protractor.
  1. Spec-файл: этот файл содержит логику и локаторы для взаимодействия с приложением .

Шаг 1) Мы должны войти в систему https://angularjs.org и ввести текст как «GURU99» в текстовое поле «Введите имя здесь».

Тестирование транспортира

Шаг 2) На этом этапе

  1. Введено имя «Гуру99»
  2. В выводимом тексте «Hello Guru99» видно.

Тестирование транспортира

Шаг 3) Теперь нам нужно захватить текст с веб-страницы после ввода имени и проверить его с помощью ожидаемого текста .

Код:

Мы должны подготовить файл конфигурации (conf.js) и файл спецификации (spec.js), как указано выше.

Логика spec.js:

describe('Enter GURU99 Name', function() {
 it('should add a Name as GURU99', function() {
 browser.get('https://angularjs.org');
 element(by.model('yourName')).sendKeys('GURU99');
  var guru= element(by.xpath('html/body/div[2]/div[1]/div[2]/div[2]/div/h1'));
expect(guru.getText()).toEqual('Hello GURU99!');
  });
});

Code Explanation of spec.js:

  1. describe(‘Enter GURU99 Name’, function()

    The describe syntax is from the Jasmine framework. Here «describe» (‘Enter GURU99 Name’) typically defines components of an application, which can be a class or function etc. In the code suite called as «Enter GURU99,» it’s just a string and not a code.

  2. it(‘should add a Name as GURU99’, function()
  3. browser.get(‘https://angularjs.org’)

    As like in Selenium Webdriver browser.get will open a new browser instance with mentioned URL.

  4. element(by.model(‘yourName’)).sendKeys(‘GURU99’)

    Here we are finding the web element using the Model name as «yourName,» which is the value of «ng-model» on the web page. Check the screen shot below-

Тестирование транспортира

  1. var guru= element(by.xpath(‘html/body/div[2]/div[1]/div[2]/div[2]/div/h1’))

    Here we are finding the web element using XPath and store its value in a variable «guru».

  2. expect(guru.getText()).toEqual(‘Hello GURU99!’)

    Finally we are verifying the text which we have got from the webpage (using gettext() ) with expected text .

Logic of conf.js:

exports.config = {
  seleniumAddress: 'http://localhost:4444/wd/hub',
  specs: ['spec.js']
};

Code Explanation of conf.js

  1. seleniumAddress: ‘http://localhost:4444/wd/hub’

    The Configuration file tells Protractor the location of Selenium Address to talk with Selenium WebDriver.

  2. specs: [‘spec.js’]

    This line tells Protractor the location of test files spec.js

Execution of the Code

Here first, we will change the directory path or navigate to the folder where the confi.js and spec.js are placed in our system.

Follow the following step.

Step 1) Open the command prompt.

Step 2) Make sure selenium web driver manager is up and running. For that give the command as «webdriver-manager start» and hit Enter.

Тестирование транспортира

(If selenium web driver is not up and running we cannot proceed with a test as Protractor cannot find the web driver to handle the web application)

Шаг 3) Откройте новую командную строку и введите команду «protractor conf.js» для запуска файла конфигурации.

Тестирование транспортира

Объяснение:

  • Здесь Protractor выполнит файл конфигурации с заданным файлом спецификации.
  • Мы видим, что сервер selenium работает по адресу » http: // localhost: 4444 / wd / hub «, который мы указали в файле conf.js.
  • Кроме того, здесь можно увидеть результат, сколько пройдено и сбои, как на скриншоте выше .

Хорошо, мы проверили результат, когда он пройден или как ожидалось. Теперь давайте посмотрим на результат неудачи.

Шаг 1) Откройте и замените ожидаемый файл spec.js на «Hello change GURU99», как показано ниже.

После изменения в spec.js :

describe('Enter GURU99 Name', function() {
 it('should add a Name as GURU99', function() {
 browser.get('https://angularjs.org');
 element(by.model('yourName')).sendKeys('GURU99');
  var guru= element(by.xpath('html/body/div[2]/div[1]/div[2]/div[2]/div/h1'));
expect(guru.getText()).toEqual('Hello change GURU99!');
  });
});

Шаг 2) Сохраните файл spec.js и повторите вышеуказанные шаги раздела «Выполнение кода»

Теперь выполните вышеуказанные шаги.

Результат:

Тестирование транспортира

Мы можем видеть результат как неудачный, обозначенный «F» на скриншоте с причиной «Ожидаемый« Здравствуйте, GURU99! » равно «Hello change GURU99!». Также показывает, сколько ошибок возникло при выполнении кода.

Можем ли мы добиться того же с веб-драйвером Selenium?

Иногда мы можем идентифицировать веб-элементы приложений AngularJS, используя XPath или CSS-селектор из веб-драйвера Selenium. Но в приложениях AngularJS элементы будут генерироваться и изменяться динамически. Поэтому Protractor — лучшая практика для работы с приложениями AngularJS.

Генерация отчетов с помощью Jasmine Reporter

Protractor поддерживает журналистов Jasmine для создания отчетов об испытаниях. В этом разделе мы будем использовать JunitXMLReporter для автоматической генерации отчетов о выполнении теста в формате XML.

Выполните следующие шаги для создания отчетов в формате XML.

Установка Жасмин Репортер

Есть два способа сделать это: локально или глобально

  1. Откройте командную строку и выполните следующую команду для локальной установки.
npm install --save-dev jasmine-reporters@^2.0.0			

Вышеприведенная команда установит жасминовые отчеты узловые модули локально из каталога, где мы запускаем команду в командной строке.

  1. Откройте командную строку и выполните следующую команду для глобальной установки.
npm install –g jasmine-reporters@^2.0.0

В этом уроке мы установим репортеров с жасмином локально .

Шаг 1) Выполнить команду.

npm install --save-dev jasmine-reporters@^2.0.0

из командной строки, как показано ниже.

Тестирование транспортира

Шаг 2) Проверьте установочные папки в каталоге . «Node_modules» должен быть доступен, если он успешно установлен, как показано на снимке ниже.

Тестирование транспортира

Шаг 3) Добавьте следующий цветной код в существующий файл conf.js

exports.config = {
      seleniumAddress: 'http://localhost:4444/wd/hub',
      capabilities: {
          'browserName': 'firefox'
      },
      specs: ['spec.js'],
     framework: 'jasmine2' ,
      onPrepare: function() {
          var jasmineReporters = require('C:/Users/RE041943/Desktop/guru/node_modules/jasmine-reporters');
          jasmine.getEnv().addReporter(new jasmineReporters.JUnitXmlReporter(null, true, true)
          );
     }
   };

Объяснение кода:

В коде мы генерируем отчет « JUnitXmlReporter » и указываем путь к месту хранения отчета.

Шаг 4) Откройте командную строку и выполните команду транспортир conf.js.

Тестирование транспортира

Шаг 5) Когда вы выполните приведенный выше код, по указанному пути будет сгенерирован файл junitresults.xml.

Тестирование транспортира

Шаг 6) Откройте XML и проверьте результат. Сообщение об ошибке отображается в файле результатов, поскольку наш тестовый пример не пройден. Тестовый случай не пройден, так как ожидаемый результат из «spec.js» не соответствует фактическому результату с веб-страницы

Тестирование транспортира

Шаг 7) Используйте файл junitresult.xml для доказательств или файлов результатов.

Резюме:

Хотя Selenium может выполнять некоторые функции, которые выполняет транспортир, транспортир является промышленным стандартом и лучшей практикой для тестирования приложений AngularJS. Транспортир также может управлять несколькими возможностями в нем и обрабатывать динамические изменения веб-элементов с помощью ng-модели, ng-click … и т. Д. (Чего не может сделать селен).

Эта статья предоставлена ​​Ранджит Кумар Энишетти