Flux de contrôle activé
Le débogueur de rapporteur et l'explorateur d'éléments ne peuvent pas être utilisés pour Node.js 8+.
Faire une pause pour déboguer
Protractor
prend en charge deux méthodes de pause pour déboguer,
browser.pause()
et
browser.debugger()
.
Vous voudrez probablement l'utiliser
browser.pause()
, à moins que vous ne souhaitiez un contrôle précis sur le débogueur de noeud.
Utiliser la pause
Insérer
browser.pause()
dans votre test où vous voulez faire une pause.
Exécutez vos tests normalement.
protractor failureConf.js
Le test suspend l'exécution après la navigation planifiée,
app/index.html#/form
mais avant d'essayer d'obtenir du texte à partir de l'élément non inexistant.
Le terminal imprimera des instructions pour continuer ou inspecter l'application, ainsi qu'une liste des tâches en attente sur le flux de contrôle
WebDriver
.
Entrez
c
pour faire avancer le test d'une tâche.
Pendant que le test est en pause, vous pouvez également interagir avec le navigateur.
Notez que si vous ouvrez les outils de développement
Chrome
, vous devez les fermer avant de poursuivre le test, car
ChromeDriver
ne peut pas fonctionner
lorsque les outils de développement sont ouverts.
Lorsque vous avez terminé le débogage, quittez en appuyant sur
Ctrl-C
.
Vos tests continueront là où ils se sont arrêtés, en utilisant le même navigateur.
Vous pouvez également utiliser
browser.explore()
dans votre
script
de test pour suspendre et entrer une boucle de réplication interactive.
Dans ce mode interactif, vous pouvez envoyer des commandes
WebDriver
à votre navigateur.
La valeur ou l'erreur résultante sera signalée au terminal.
Remarque : étant donné qu'il s'agit de tâches asynchrones, vous devez augmenter le délai d'attente par défaut de vos spécifications,
sinon une exception de délai d'attente par défaut serait levée !
Utiliser le débogueur
Insérer
browser.debugger()
dans votre test où vous voulez rompre :
Puis lancez le test en mode débogage :
Ceci utilise
le débogueur de noeud.
Entrez
c
pour démarrer l'exécution et continuez après le point d'arrêt ou entrez la commande
next
.
La commande suivante passe à la ligne suivante du flux de contrôle.
browser.debugger()
est différente de l'instruction node
debugger;
, car elle ajoute une tâche de point d'arrêt de manière asynchrone dans la file d'attente.
Cela signifie que l'exemple ci-dessus s'interrompt une fois que l'instruction
get
a été exécutée, alors que
debugger
le test met en pause une fois que
la commande get est planifiée mais qu'elle n'a pas encore été exécutée.
La méthode
debugger()
de
Protractor
fonctionne en planifiant un point d'arrêt de débogage de noeud sur le flux de contrôle.
Quand
debugger()
est appelé, il insère également tous les
scripts
côté client de
Protractor
dans le navigateur en tant que
window.clientSideScripts
.
Ils peuvent être utilisés à partir de la console du navigateur.
Tester le rapporteur de manière interactive
Lors du débogage ou de la première écriture de suites de tests, il peut être utile d'essayer les commandes de
Protractor
sans démarrer la suite de tests complète.
Vous pouvez le faire avec l'explorateur d'éléments.
Pour exécuter l'élément d'exploration, exécutez simplement le rapporteur comme vous le feriez normalement, mais passez l'indicateur
--elementExplorer
:
Cela chargera l'URL sur
WebDriver
et placera le terminal dans une boucle
REPL
. Vous verrez une invite
>
.
Les variables
browser
,
element
et
protractor
seront disponibles. Entrez une commande telle que :
ou
En tapant l'onglet à une invite vide, une suggestion de recherche d'éléments sera complétée.
Vous pouvez également utiliser la commande
list(locator)
pour répertorier tous les éléments correspondant à un localisateur.
Element Explorer démarrera chrome par défaut.
Cependant, vous pouvez spécifier un autre navigateur, modifier les paramètres du navigateur ou spécifier toute autre
configuration que vous feriez normalement avec votre test de protractor. Pour ce faire, transmettez les rapporteurs au rapporteur comme vous le feriez normalement,
mais avec le drapeau
--elementExplorer
défini:
Par exemple, pour vous connecter directement à
ChromeDriver
, utilisez
Element explore ignorera vos spécifications, ne configurera pas votre framework (par exemple,
jasmine
,
moka
,
cucumber
),
et vous permettra seulement de transmettre une capacité, mais respectera tous les autres paramètres de votre configuration.
La note
baseUrl
est utilisée ici comme page initiale, c'est-à-dire que l'explorateur d'éléments essaiera de naviguer
baseUrl
automatiquement au démarrage.