Транспортир - 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
Он используется для определения, включен ли поток управления или нет.