Transportador - Core APIS

Este capítulo le permite comprender varias API principales que son clave para el funcionamiento del transportador.

Importancia de las API de transportador

Protractor nos proporciona una amplia gama de API que son muy importantes para realizar las siguientes acciones para obtener el estado actual del sitio web:

  • Obteniendo los elementos DOM de la página web que vamos a probar.
  • Interactuar con los elementos DOM.
  • Asignarles acciones.
  • Compartiendo información con ellos.

Para realizar las tareas anteriores, es muy importante comprender las API de transportador.

Varias API de transportador

Como sabemos, Protractor es una envoltura de Selenium-WebDriver, que son los enlaces de WebDriver para Node.js. Transportador tiene las siguientes API:

Navegador

Es un envoltorio alrededor de una instancia de WebDriver que se usa para manejar comandos de nivel de navegador como navegación, información de toda la página, etc. Por ejemplo, el método browser.get carga una página.

Elemento

Se utiliza para buscar e interactuar con el elemento DOM en la página que estamos probando. Para ello, requiere un parámetro para localizar el elemento.

Localizadores (por)

Es una colección de estrategias de localización de elementos. Los elementos, por ejemplo, se pueden encontrar mediante el selector de CSS, por ID o por cualquier otro atributo al que estén vinculados con ng-model.

A continuación, analizaremos en detalle estas API y sus funciones.

API del navegador

Como se discutió anteriormente, es un contenedor alrededor de una instancia de WebDriver para manejar comandos de nivel de navegador. Realiza varias funciones de la siguiente manera:

Funciones y sus descripciones

Las funciones de la API de ProtractorBrowser son las siguientes:

browser.angularAppRoot

Esta función de la API del navegador establece el selector de CSS para un elemento en el que vamos a encontrar Angular. Por lo general, esta función está en 'cuerpo', pero en caso de que sea nuestra ng-app, está en una subsección de la página; también puede ser un subelemento.

browser.waitForAngularEnabled

Esta función de la API del navegador se puede establecer en verdadero o falso. Como sugiere el nombre, si esta función está configurada como falsa, Transportador no esperará a que se completen las tareas de Angular $ http y $ timeout antes de interactuar con el navegador. También podemos leer el estado actual sin cambiarlo llamando a waitForAngularEnabled () sin pasar un valor.

browser.getProcessedConfig

Con la ayuda de esta función de las API del navegador, podemos obtener el objeto de configuración procesado, incluidas las especificaciones y las capacidades, que se está ejecutando actualmente.

browser.forkNewDriverInstance

Como su nombre indica, esta función bifurcará otra instancia de navegador para usar en pruebas interactivas. Se puede ejecutar con el flujo de control habilitado y deshabilitado. A continuación se muestra un ejemplo para ambos casos:

Example 1

Corriendo browser.forkNewDriverInstance() con control de flujo habilitado -

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

Example 2

Corriendo browser.forkNewDriverInstance() con control de flujo desactivado -

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

browser.restart

Como sugiere el nombre, reiniciará el navegador cerrando la instancia del navegador y creando una nueva. También puede funcionar con el flujo de control habilitado y deshabilitado. A continuación se muestra un ejemplo para ambos casos:

Example 1 - Corriendo browser.restart() con control de flujo habilitado -

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

Example 2 - Corriendo browser.forkNewDriverInstance() con control de flujo desactivado -

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

browser.restartSync

Es similar a la función browser.restart (). La única diferencia es que devuelve la nueva instancia del navegador directamente en lugar de devolver una promesa que se resuelve en la nueva instancia del navegador. Solo se puede ejecutar cuando el flujo de control está habilitado.

Example - Corriendo browser.restartSync() con control de flujo habilitado -

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

browser.useAllAngular2AppRoots

Como sugiere el nombre, solo es compatible con Angular2. Buscará en todas las aplicaciones angulares disponibles en la página mientras encuentra elementos o espera la estabilidad.

browser.waitForAngular

Esta función de la API del navegador indica al WebDriver que espere hasta que Angular haya terminado de renderizarse y no tenga llamadas $ http o $ timeout pendientes antes de continuar.

browser.findElement

Como sugiere el nombre, esta función de la API del navegador espera a que Angular termine de renderizarse antes de buscar el elemento.

browser.isElementPresent

Como sugiere el nombre, esta función de la API del navegador probará si el elemento está presente en la página o no.

browser.addMockModule

Agregará un módulo para cargar antes de Angular cada vez que se llame al método Protractor.get.

Example

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

browser.clearMockModules

a diferencia de browser.addMockModule, borrará la lista de módulos simulados registrados.

browser.removeMockModule

Como sugiere el nombre, eliminará un módulo de simulación de registro. Ejemplo: browser.removeMockModule ('modName');

browser.getRegisteredMockModules

Frente a browser.clearMockModule, obtendrá la lista de módulos simulados registrados.

browser.get

Podemos usar browser.get () para navegar el navegador a una dirección web en particular y cargar los módulos simulados para esa página antes de la carga 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

Como sugiere el nombre, esto recargará la página actual y cargará módulos simulados antes que Angular.

browser.navigate

Como sugiere el nombre, se utiliza para volver a mezclar métodos de navegación en el objeto de navegación para que se invoquen como antes. Ejemplo: driver.navigate (). Refresh ().

browser.setLocation

Se utiliza para navegar a otra página utilizando la navegación dentro de la página.

Example

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

Navegará de la página ABC a la DEF.

browser.debugger

Como sugiere el nombre, esto debe usarse con la depuración del transportador. Esta función básicamente agrega una tarea al flujo de control para pausar la prueba e inyectar funciones de ayuda en el navegador para que la depuración se pueda realizar en la consola del navegador.

browser.pause

Se utiliza para depurar pruebas de WebDriver. Nosotros podemos usarbrowser.pause() en nuestra prueba para ingresar al depurador de transportador desde ese punto en el flujo de control.

Example

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

browser.controlFlowEnabled

Se utiliza para determinar si el flujo de control está habilitado o no.