web-dev-qa-db-fra.com

Rapporteur E2E angular "angulaire introuvable sur la fenêtre"

J'ai une étrange erreur après avoir exécuté mes tests dans angular project Error: Error while waiting for Protractor to sync with the page: "angular could not be found on the window". Ma configuration de rapporteur ressemble à ceci:

require('coffee-script').register();

exports.config = {
  seleniumServerJar: './node_modules/protractor/Selenium/selenium-server-standalone-2.39.0.jar',
  seleniumAddress: 'http://localhost:4444/wd/hub',

  capabilities: {
    browserName: 'chrome'
    //'chromeOptions': {
    //  'args': ['--disable-extensions']
    //}
  },

  specs: [
    '*_spec.coffee'
  ],

  allScriptsTimeout: 10000000000,
  baseUrl: 'http://localhost:9003/',

  jasmineNodeOpts: {
    isVerbose: false,
    showColors: true,
    includeStackTrace: true,
    defaultTimeoutInterval: 10000000000
  }
};

Et test:

loginPage = require './pages/log_in_page'

describe 'Log In', ->

      it 'shows after login', ->
        loginPage()
        .setEmail('[email protected]')
        .setPass('a46s75d4as765d4a6s7d54as76d5as74das76d5')

Obtenez des informations de la page:

module.exports = ->
      @email = element By.css '.test-i-login'
      @password = element By.css '.test-i-password'

      @setEmail = (name) =>
        @email.sendKeys(name)
        this

      @setPass = (number) =>
        @password.sendKeys(number)
        this
      this

Il y a des problèmes similaires sur github, mais je n'ai pas trouvé de solution qui fonctionne pour moi. Thx pour répondre.

17
Oleksandr Verhun

Modification de l'option framework dans la configuration de Protractor en 'jasmine2' a résolu ce problème pour moi.

Voir ce fil pour plus d'informations.

14
mms27

Dans mon scénario, la page de connexion n'est pas angulaire, a essayé la méthode ci-dessous, a fonctionné pour moi

browser.driver.findElement(By.id('username')).sendKeys('binnu');

Le rapporteur est conçu pour tester les applications Angular, c'est-à-dire les pages Web qui ont une balise ng-app Dans le corps du code HTML et les contrôleurs qui correspondent à Angular = code dans un fichier Javascript.

La raison pour laquelle le rapporteur est si utile est que Angular s'exécutent de manière asynchrone, ce qui signifie qu'elles ne sont pas toujours terminées lors du chargement de la page Web. La plupart des frameworks de test essaient de cliquez sur des choses, tapez des choses, etc. avant que la page ne soit complètement prête. Protractor détecte tous les processus Angular exécutés en arrière-plan afin que vous ne fassiez rien accidentellement avant que tout ne soit prêt.

Ce que Protractor vous dit, c'est qu'il n'a trouvé aucun processus Angular en cours d'exécution sur la page. Votre page peut fonctionner correctement, mais elle ne dépend pas de Angular d'une manière que Protractor peut reconnaître.

Cela ne signifie pas que Protractor ne peut pas tester la page. Vous pouvez accéder aux commandes WebDriver standard à l'aide de browser.driver.any_webdriver_command_here(). Vous manquerez simplement les fantastiques capacités de synchronisation qu'offre Protractor.

5
Isaac Lyman

La raison pour laquelle cela s'est produit, parce que l'installation du chemin chromedriver était incorrecte. Et c'est pourquoi j'ai reçu ce message "angulaire introuvable sur la fenêtre". L'autre problème que j'ai eu, c'est que j'avais besoin d'exécuter le pilote Web manuellement comme processus d'arrière-plan. Cela résout en faisant une bonne tâche de gorgée (que j'ai mal faite), cela ressemblera à ceci:

gulp.task ['test'], ->
   runSequence start_server, run_protractor, end_server.

Supposons que cela aide quelqu'un, qui aura des problèmes similaires (idiots).

2
Oleksandr Verhun