Учебники

Транспортир — основной АПИС

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

Важность API транспортировщиков

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

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

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

Различные API-интерфейсы транспортировщиков

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

браузер

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

Элемент

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

Локаторы (мимо)

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

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

API браузера

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

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

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

browser.angularAppRoot

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

browser.waitForAngularEnabled

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

browser.getProcessedConfig

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

browser.forkNewDriverInstance

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

Пример 1

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

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

Пример 2

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

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

browser.restart

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

Пример 1 — Запуск browser.restart () с включенным потоком управления —

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

Пример 2 — Запуск browser.forkNewDriverInstance () с отключенным потоком управления —

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

browser.restartSync

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

Пример — запуск browser.restartSync () с включенным потоком управления —

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

browser.useAllAngular2AppRoots

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

browser.waitForAngular

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

browser.findElement

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

browser.isElementPresent

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

browser.addMockModule

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

пример

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 () для навигации браузера по определенному веб-адресу и загрузки макетов модулей для этой страницы до угловой загрузки.

пример

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

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

пример

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

Он будет перемещаться от ABC до страницы DEF.

browser.debugger

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

browser.pause

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

пример

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

browser.controlFlowEnabled

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