Транспортир - Core APIS

Эта глава позволяет вам понять различные основные API-интерфейсы, которые являются ключевыми для функционирования транспортира.

Важность API-интерфейсов транспортира

Protractor предоставляет нам широкий спектр API-интерфейсов, которые очень важны для выполнения следующих действий для получения текущего состояния веб-сайта:

  • Получение DOM-элементов веб-страницы, которую мы собираемся протестировать.
  • Взаимодействие с элементами DOM.
  • Назначение им действий.
  • Обмен информацией с ними.

Для выполнения вышеуказанных задач очень важно понимать API-интерфейсы Protractor.

Различные API-интерфейсы Protractor

Как мы знаем, Protractor - это оболочка для Selenium-WebDriver, которая является привязкой WebDriver для Node.js. Protractor имеет следующие API -

Браузер

Это оболочка вокруг экземпляра WebDriver, который используется для обработки команд уровня браузера, таких как навигация, информация по всей странице и т. Д. Например, метод browser.get загружает страницу.

Элемент

Он используется для поиска и взаимодействия с элементом DOM на странице, которую мы тестируем. Для этого требуется один параметр для определения местоположения элемента.

Локаторы (автор)

Это набор стратегий поиска элементов. Например, элементы можно найти с помощью селектора CSS, идентификатора или любого другого атрибута, к которому они привязаны с помощью ng-модели.

Далее мы собираемся подробно обсудить эти API и их функции.

API браузера

Как обсуждалось выше, это оболочка вокруг экземпляра WebDriver для обработки команд уровня браузера. Он выполняет различные функции следующим образом -

Функции и их описание

Функции ProtractorBrowser API следующие:

browser.angularAppRoot

Эта функция API браузера устанавливает селектор CSS для элемента, на котором мы собираемся найти Angular. Обычно эта функция находится в 'теле', но в случае нашего ng-app, она находится в подразделе страницы; он также может быть подэлементом.

browser.waitForAngularEnabled

Эта функция API браузера может иметь значение true или false. Как следует из названия, если для этой функции задано значение false, то Protractor не будет ждать завершения задач Angular $ http и $ timeout перед взаимодействием с браузером. Мы также можем прочитать текущее состояние, не меняя его, вызвав waitForAngularEnabled () без передачи значения.

browser.getProcessedConfig

С помощью этой функции API браузера мы можем получить обработанный объект конфигурации, включая спецификацию и возможности, который в настоящее время выполняется.

browser.forkNewDriverInstance

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

Example 1

Бег browser.forkNewDriverInstance() с включенным потоком управления -

var fork = browser.forkNewDriverInstance();
fork.get(‘page1’);

Example 2

Бег browser.forkNewDriverInstance() с отключенным потоком управления -

var fork = await browser.forkNewDriverInstance().ready;
await forked.get(‘page1’);

browser.restart

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

Example 1 - Бег browser.restart() с включенным потоком управления -

browser.get(‘page1’);
browser.restart();
browser.get(‘page2’);

Example 2 - Бег browser.forkNewDriverInstance() с отключенным потоком управления -

await browser.get(‘page1’);
await browser.restart();
await browser.get(‘page2’);

browser.restartSync

Это похоже на функцию browser.restart (). Единственное отличие состоит в том, что он возвращает новый экземпляр браузера напрямую, а не возвращает обещание, разрешающееся в новый экземпляр браузера. Он может работать только при включенном потоке управления.

Example - Бег browser.restartSync() с включенным потоком управления -

browser.get(‘page1’);
browser.restartSync();
browser.get(‘page2’);

browser.useAllAngular2AppRoots

Как следует из названия, он совместим только с Angular2. Он будет искать все доступные на странице приложения angular, находя элементы или ожидая стабильности.

browser.waitForAngular

Эта функция API браузера указывает WebDriver дождаться завершения рендеринга Angular и отсутствия невыполненных вызовов $ http или $ timeout перед продолжением.

browser.findElement

Как следует из названия, эта функция API браузера ожидает завершения рендеринга Angular перед поиском элемента.

browser.isElementPresent

Как следует из названия, эта функция API браузера проверяет, присутствует ли элемент на странице или нет.

browser.addMockModule

Он будет добавлять модуль для загрузки перед Angular каждый раз, когда вызывается метод Protractor.get.

Example

browser.addMockModule('modName', function() {
   angular.module('modName', []).value('foo', 'bar');
});

browser.clearMockModules

в отличие от browser.addMockModule, он очистит список зарегистрированных фиктивных модулей.

browser.removeMockModule

Как следует из названия, он удалит фиктивные модули реестра. Пример: browser.removeMockModule ('modName');

browser.getRegisteredMockModules

В отличие от browser.clearMockModule, он получит список зарегистрированных макетных модулей.

browser.get

Мы можем использовать browser.get () для перехода в браузере по определенному веб-адресу и загрузки фиктивных модулей для этой страницы перед загрузкой Angular.

Example

browser.get(url);
browser.get('http://localhost:3000'); 
// This will navigate to the localhost:3000 and will load mock module if needed

browser.refresh

Как следует из названия, это перезагрузит текущую страницу и загрузит фиктивные модули перед Angular.

browser.navigate

Как следует из названия, он используется для смешивания методов навигации обратно в объект навигации, чтобы они вызывались, как и раньше. Пример: driver.navigate (). Refresh ().

browser.setLocation

Он используется для перехода на другую страницу с помощью внутристраничной навигации.

Example

browser.get('url/ABC');
browser.setLocation('DEF');
expect(browser.getCurrentUrl())
   .toBe('url/DEF');

Он перейдет от ABC к странице DEF.

browser.debugger

Как следует из названия, это необходимо использовать при отладке транспортира. Эта функция в основном добавляет задачу к потоку управления, чтобы приостановить тест и внедрить вспомогательные функции в браузер, чтобы отладка могла выполняться в консоли браузера.

browser.pause

Он используется для отладки тестов WebDriver. Мы можем использоватьbrowser.pause() в нашем тесте для входа в отладчик транспортира из этой точки в потоке управления.

Example

element(by.id('foo')).click();
browser.pause();
// Execution will stop before the next click action.
element(by.id('bar')).click();

browser.controlFlowEnabled

Он используется для определения, включен ли поток управления или нет.