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.