Rapporteur - Core APIS

Ce chapitre vous permet de comprendre les différentes API de base qui sont essentielles au fonctionnement du rapporteur.

Importance des API Protractor

Protractor nous fournit une large gamme d'API qui sont très importantes pour effectuer les actions suivantes pour obtenir l'état actuel du site Web -

  • Obtenir les éléments DOM de la page Web que nous allons tester.
  • Interagir avec les éléments DOM.
  • Leur attribuer des actions.
  • Partager des informations avec eux.

Pour effectuer les tâches ci-dessus, il est très important de comprendre les API de Protractor.

Diverses API Protractor

Comme nous le savons, Protractor est un wrapper autour de Selenium-WebDriver qui est les liaisons WebDriver pour Node.js. Protractor a les API suivantes -

Navigateur

Il s'agit d'un wrapper autour d'une instance de WebDriver qui est utilisé pour gérer les commandes au niveau du navigateur telles que la navigation, les informations sur toute la page, etc. Par exemple, la méthode browser.get charge une page.

Élément

Il est utilisé pour rechercher et interagir avec l'élément DOM sur la page que nous testons. Pour cela, il nécessite un paramètre pour localiser l'élément.

Localisateurs (par)

C'est une collection de stratégies de localisation d'éléments. Les éléments, par exemple, peuvent être trouvés par le sélecteur CSS, par ID ou par tout autre attribut auquel ils sont liés avec ng-model.

Ensuite, nous allons discuter en détail de ces API et de leurs fonctions.

API du navigateur

Comme indiqué ci-dessus, il s'agit d'un wrapper autour d'une instance de WebDriver pour gérer les commandes au niveau du navigateur. Il remplit diverses fonctions comme suit -

Fonctions et leurs descriptions

Les fonctions de l'API ProtractorBrowser sont les suivantes:

browser.angularAppRoot

Cette fonction de l'API Browser définit le sélecteur CSS pour un élément sur lequel nous allons trouver Angular. Habituellement, cette fonction est dans 'body', mais dans le cas où si notre ng-app, c'est sur une sous-section de la page; il peut également s'agir d'un sous-élément.

browser.waitForAngularEnabled

Cette fonction de l'API du navigateur peut être définie sur true ou false. Comme son nom l'indique, si cette fonction est définie sur false, Protractor n'attendra pas la fin des tâches Angular $ http et $ timeout avant d'interagir avec le navigateur. Nous pouvons également lire l'état actuel sans le changer en appelant waitForAngularEnabled () sans passer de valeur.

browser.getProcessedConfig

Avec l'aide de cette fonction d'API de navigateur, nous pouvons obtenir l'objet de configuration traité, y compris les spécifications et les capacités, qui est actuellement en cours d'exécution.

browser.forkNewDriverInstance

Comme son nom l'indique, cette fonction créera une autre instance de navigateur à utiliser dans les tests interactifs. Il peut être exécuté avec le flux de contrôle activé et désactivé. Un exemple est donné ci-dessous pour les deux cas -

Example 1

Fonctionnement browser.forkNewDriverInstance() avec contrôle du flux activé -

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

Example 2

Fonctionnement browser.forkNewDriverInstance() avec contrôle du flux désactivé -

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

browser.restart

Comme son nom l'indique, il redémarrera le navigateur en fermant l'instance du navigateur et en en créant une nouvelle. Il peut également fonctionner avec le flux de contrôle activé et désactivé. Un exemple est donné ci-dessous pour les deux cas -

Example 1 - Courir browser.restart() avec contrôle du flux activé -

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

Example 2 - Courir browser.forkNewDriverInstance() avec contrôle du flux désactivé -

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

browser.restartSync

Elle est similaire à la fonction browser.restart (). La seule différence est qu'elle renvoie directement la nouvelle instance de navigateur plutôt que de renvoyer une promesse résolvant la nouvelle instance de navigateur. Il ne peut s'exécuter que lorsque le flux de contrôle est activé.

Example - Courir browser.restartSync() avec contrôle du flux activé -

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

browser.useAllAngular2AppRoots

Comme son nom l'indique, il est uniquement compatible avec Angular2. Il recherchera dans toutes les applications angulaires disponibles sur la page tout en trouvant des éléments ou en attendant la stabilité.

browser.waitForAngular

Cette fonction d'API du navigateur demande au WebDriver d'attendre que Angular ait terminé le rendu et n'ait aucun appel $ http ou $ timeout en attente avant de continuer.

browser.findElement

Comme son nom l'indique, cette fonction d'API du navigateur attend qu'Angular termine le rendu avant de rechercher l'élément.

browser.isElementPresent

Comme son nom l'indique, cette fonction d'API du navigateur testera si l'élément est présent ou non sur la page.

browser.addMockModule

Il ajoutera un module à charger avant Angular chaque fois que la méthode Protractor.get sera appelée.

Example

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

browser.clearMockModules

contrairement à browser.addMockModule, il effacera la liste des modules simulés enregistrés.

browser.removeMockModule

Comme son nom l'indique, il supprimera un module de simulation de registre. Exemple: browser.removeMockModule ('modName');

browser.getRegisteredMockModules

En face de browser.clearMockModule, il obtiendra la liste des modules simulés enregistrés.

browser.get

Nous pouvons utiliser browser.get () pour naviguer dans le navigateur vers une adresse Web particulière et charger les modules simulés pour cette page avant le chargement angulaire.

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

Comme son nom l'indique, cela rechargera la page actuelle et chargera les modules simulés avant Angular.

browser.navigate

Comme son nom l'indique, il est utilisé pour mélanger les méthodes de navigation dans l'objet de navigation afin qu'elles soient invoquées comme auparavant. Exemple: driver.navigate (). Refresh ().

browser.setLocation

Il est utilisé pour naviguer vers une autre page en utilisant la navigation dans la page.

Example

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

Il naviguera de la page ABC à la page DEF.

browser.debugger

Comme son nom l'indique, cela doit être utilisé avec le débogage du rapporteur. Cette fonction ajoute essentiellement une tâche au flux de contrôle pour suspendre le test et injecter des fonctions d'assistance dans le navigateur afin que le débogage puisse être effectué dans la console du navigateur.

browser.pause

Il est utilisé pour le débogage des tests WebDriver. On peut utiliserbrowser.pause() dans notre test pour entrer dans le débogueur de rapporteur à partir de ce point dans le flux de contrôle.

Example

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

browser.controlFlowEnabled

Il est utilisé pour déterminer si le flux de contrôle est activé ou non.