0
votes

waitForAngularEnable (true) ne fonctionne pas - ScriptTimeoutError: délai d'expiration du script: le résultat n'a pas été reçu dans

Page de départ angulaire. En cliquant sur un bouton, vous accédez à la page de connexion qui est sans angle. Après la connexion, le reste des pages est angulaire.

J'utilise async / await .

  • Incluez waitForAngularEnable ( true ) dans onPrepare mais cela n'a pas fonctionné.
  • Essayez d'ajouter waitForAngularEnable ( true ) après la connexion et cela n'a pas fonctionné.
  • J'ai essayé d'augmenter le timeOut et cela n'a pas fonctionné aussi.
  • Fonctionne uniquement lorsque waitForAngularEnable ( false ). Je ne peux pas utiliser la fonction intégrée dans le rapporteur waiForAngular qui attend le chargement angulaire. Actuellement, avec waitForAngularEnable (false), je le gère manuellement en utilisant browser.driver.wait (until.elementsLocated (by.id (value)), 30000); ou attendez browser.wait (ExpectedConditions.presenceOf (ele), 30000) ;. De cette façon, cela fonctionne.

Versions-
"rapporteur": "^ 5.4.2"
"nœud": 10.15.3
"target": "es6"
"concombre": "^ 5.1.0",
"concombre-html-reporter": "^ 5.0.0"
ScriptTimeoutError: délai d'expiration du script: le résultat n'a pas été reçu dans les 30 secondes
(Informations sur la session: chrome = 74.0.3729.169)
(Info pilote: chromedriver = 74.0.3729.6
(255758eccf3d244491b8a1317aa76e1ce10d57e9-refs / branch-heads / 3729 @ {# 29}), platform = Windows NT 10.0.17763 x86_64) sur Object.checkLegacyResponse
(C: \ Automation \ General \ node_modules \ selenium-webdriver \ lib \ error.js: 546: 15) dans parseHttpResponse (C: \ Automation \ General \ node_modules \ selenium-webdriver \ lib \ http.js: 509: 13)
à doSend.then.response (C: \ Automation \ General \ node_modules \ selenium-webdriver \ lib \ http.js: 441: 30)
à process._tickCallback (internal / process / next_tick.js: 68: 7) From: Task: Protractor.waitForAngular () - Locator: By (xpath, // span [@ class = 'title__subtext'])


2 commentaires

Si cela fonctionne, quel est votre problème. Vous devrez définir waitForAngularEnable (false) pour les pages non angulaires.


Je ne peux pas utiliser la fonction intégrée dans le rapporteur waiForAngular qui attend le chargement angulaire. Actuellement, avec waitForAngularEnable (false), je le gère manuellement en utilisant browser.driver.wait (until.elementsLocated (by.id (value)), 30000); ou attendez browser.wait (ExpectedConditions.presenceOf (ele), 30000) ;. De cette façon, cela fonctionne.


3 Réponses :


0
votes

Ce que vous faites (selon ma compréhension de votre problème)

  • ouvrir la page angulaire
  • s'identifier
  • vous êtes redirigé vers une page non angulaire (à ce stade, le rapporteur ne répond déjà pas)
  • vous essayez d' await browser.waitForAngularEnabled(false); (mais le rapporteur ne répond pas car vous êtes sur une page non angulaire)

Ce que tu devrais faire

  • ouvrir la page angulaire
  • entrer les informations d'identification
  • avant de cliquer sur le bouton Soumettre, exécutez await browser.waitForAngularEnabled(false);
  • vous êtes redirigé vers une page non angulaire (à ce stade, le rapporteur peut communiquer avec elle)
  • faites ce que vous voulez faire

Simplement, vous devez désactiver l'attente angulaire PENDANT que vous êtes toujours sur la page angulaire

PS et vice versa. si vous passez d'une page non angulaire à une page angulaire, vous ne devez activer la fonctionnalité que lorsque vous avez atterri sur une page angulaire


0 commentaires

0
votes

Il est possible d'utiliser waitForAngularEnabled plusieurs fois dans le même test, mais nécessite un ajout non évident de browser.get . Vous pouvez utiliser les éléments suivants:

// do things on your Angular application

waitForAngularEnabled(false)

// do things on non-angular page

waitForAngularEnabled(true)
browser.get('/home') // this is a page from your Angular application

La fonction browser.get bloque jusqu'à ce que la page angulaire soit chargée.


0 commentaires

-1
votes

Pour les applications angulaires, Protractor attendra que la Angular Zone stabilise. Cela signifie que les opérations asynchrones de longue durée empêcheront votre test de continuer. Pour contourner ce problème, exécutez les tâches suivantes en dehors de la zone angulaire.

Vous devez probablement définir ce délai comme correctif jusqu'à ce que le problème soit résolu au niveau de l'application

allScriptsTimeout: 60000

J'ai trouvé un bon article à ce sujet: https://valor-software.com/articles/testing-with-protractor-how-to-fix-synchronization-issues.html


0 commentaires