Impossible d'exécuter Protractor-ECONNREFUSED connect ECONNREFUSED

J'essaie D'apprendre L'AngularJS. Dans le cadre de cela, je veux apprendre à utiliser des tests de bout en bout. Actuellement, j'ai une structure de répertoire comme ceci:

node_modules
  .bin
  ...
  protractor
    ...
    node_modules
       .bin
       adam-zip
       glob
       minijasminenode
       optimist
       saucelabs
       selenium-webdriver
protractor
  config.js
src
  tests
    test.e2e.js

Ma config.le fichier js ressemble à ce qui suit:

exports.config = {
    seleniumAddress: 'http://localhost:4444/wd/hub',

    capabilities: {
        'browserName': 'chrome'
    },

    specs: [
        '../src/tests/test.e2e.js'
    ],

    jasmineNodeOpts: {
        showColors: true,
        defaultTimeoutInterval: 30000
    }
};

Test.e2e.js ressemble à ce qui suit:

'use strict';

describe('My Sample', function () {
    driver = protractor.getInstance();

    beforeEach(function () {
        driver.get('#/');
    });

    it('My First Test', function () {
        message = "Hello.";
        expect(message).toEqual('World.');
    });
});

Lorsque je tente d'exécuter mes tests de bout en bout en utilisant protractor, j'exécute la commande suivante à partir de la ligne de commande:

node_modules.binprotractor protractorconfig.js

Lorsque j'exécute cette commande, je reçois l'erreur suivante:

C:SrcMyProjectnode_modulesprotractornode_modulesselenium-webdriverlibwebdriverpromise.js:1542
      throw error;
            ^
Error: ECONNREFUSED connect ECONNREFUSED
    at ClientRequest.<anonymous> (C:SrcMyProjectnode_modulesprotractornode_modulesselenium-webdriverhttpindex.js:12
7:16)
    at ClientRequest.EventEmitter.emit (events.js:95:17)
    at Socket.socketErrorListener (http.js:1528:9)
    at Socket.EventEmitter.emit (events.js:95:17)
    at net.js:441:14
    at process._tickCallback (node.js:415:13)
==== async task ====
WebDriver.createSession()
    at Function.webdriver.WebDriver.acquireSession_ (C:SrcMyProjectnode_modulesprotractornode_modulesselenium-webdriv
erlibwebdriverwebdriver.js:130:49)
    at Function.webdriver.WebDriver.createSession (C:SrcMyProjectnode_modulesprotractornode_modulesselenium-webdriver
libwebdriverwebdriver.js:110:30)
    at Builder.build (C:SrcMyProjectnode_modulesprotractornode_modulesselenium-webdriverbuilder.js:105:20)
    at runJasmineTests (C:SrcMyProjectnode_modulesprotractorlibrunner.js:191:45)
    at C:SrcMyProjectnode_modulesprotractorlibrunner.js:255:5
    at C:SrcMyProjectnode_modulesprotractornode_modulesselenium-webdriverlibgoogbase.js:1178:15
    at webdriver.promise.ControlFlow.runInNewFrame_ (C:SrcMyProjectnode_modulesprotractornode_modulesselenium-webdriv
erlibwebdriverpromise.js:1438:20)
    at notify (C:SrcMyProjectnode_modulesprotractornode_modulesselenium-webdriverlibwebdriverpromise.js:328:12)
    at then (C:SrcMyProjectnode_modulesprotractornode_modulesselenium-webdriverlibwebdriverpromise.js:377:7)

Ce qui suis Je fais de mal?

32
demandé sur Paul Sweatte 2013-11-18 22:55:53

10 réponses

J'ai résolu ce problème avec --autonome drapeau:

webdriver-manager start --standalone

61
répondu juanignaciosl 2014-01-14 21:57:55

Je l'ai fait fonctionner en supprimant la ligne suivante de ma configuration.js

seleniumAddress: 'http://localhost:4444/wd/hub',
28
répondu Shashank Avusali 2015-07-13 07:13:46

Utilisez-vous un serveur selenium? Le README git indique ce qui suit:

WebdriverJS n'inclut pas nativement le serveur selenium - vous devez démarrer un serveur selenium autonome. Tous vous avez besoin est la dernière sélénium-serveur autonome.

Source: https://github.com/angular/protractor

13
répondu annalogarhythm 2013-11-18 22:35:31

Le message d'erreur est dû à ce qui suit:

[ECONNREFUSED] la tentative de connexion a été ignorée (car la cible n'écoute pas les connexions) ou explicitement rejetée.

Vérifiez L'URL du gestionnaire Webdriver. L'URL par défaut est:

http://localhost:4444/wd/hub

Utilisez un processus d'arrière-plan pour exécuter webdriver-manager, puis exécutez protractor:

Start-Process webdriver-manager start -passthru
protractor conf.js

Cela va démarrer un serveur Selenium et affichera un tas de journaux d'informations. Votre test de rapporteur sera envoyer des demandes à ce serveur pour contrôler un navigateur local. Laissez ce serveur en cours d'exécution

Références à

5
répondu Paul Sweatte 2017-07-26 13:48:19

Pour moi, cela s'était produit en raison de versions incompatibles de Node et Protractor.

Mon correctif -

  1. Mettre à jour le nœud vers la dernière version (v7.0.0 dans mon cas)

Suivez les étapes indiquées ici https://stackoverflow.com/a/19333717/1902831

  1. Installez la dernière version du rapporteur (4.0.10 dans mon cas) en utilisant:

Npm install-g protractor

  1. Ouvrez un autre terminal et exécutez-les commande:

Mise à jour WebDriver-manager

WebDriver-gestionnaire démarrer

  1. exécuter des tests dans un autre terminal en utilisant:

Rapporteur conf.js

4
répondu Shardul 2017-05-23 12:25:54

Si vous utilisez le plugin npm protractor-WebDriver grunt ( https://www.npmjs.org/package/grunt-protractor-webdriver ) Vous pouvez exeprience même genre d'erreur. Cela est dû à la résiliation de webdriver juste avant la fin du test. Le test s'exécute avec succès et vous avez un message comme:

Session deleted: Going to shut down the Selenium server
Shutting down Selenium server: http://127.0.0.1:4444
Shut down Selenium server: http://127.0.0.1:4444 (OKOK)

d:\Projets\Clouderial\nodeProjects\cld-apps\node_modules\grunt-protractor-runner\node_modules\protractor\node_modules\selenium-webdriver\http\index.js:145
      callback(new Error(message));
               ^
Error: ECONNREFUSED connect ECONNREFUSED
    at ClientRequest.<anonymous> (d:\Projets\Clouderial\nodeProjects\cld-apps\node_modules\grunt-protractor-runner\node_modules\protractor\node_modules\selenium-webdriver\http\index.js:145:16)
    at ClientRequest.EventEmitter.emit (events.js:95:17)
    at Socket.socketErrorListener (http.js:1547:9)
    at Socket.EventEmitter.emit (events.js:95:17)
    at net.js:440:14
    at process._tickCallback (node.js:419:13)

Je résous cela en utilisant l'option keepAlive dans le plugin grunt.

Voici mon Gruntfile.js config:

protractor_webdriver: {
        options: {
            keepAlive : true   // True to keep the webdriver alive
        },
        start: {
        },
    },
...

J'espère que cela aidera quelqu'un.

JM.

2
répondu jmcollin92 2014-10-15 22:12:33

J'ai également rencontré le même problème, l'astuce qui a fonctionné pour moi est d'utiliser deux fenêtres cmd, en gardant celle ouverte après avoir tapé webdriver-manager start et sans appuyer sur touche Entrée (si la touche entrée est enfoncée,le serveur selenium est arrêté, Je ne sais pas pourquoi) ouvrez une autre fenêtre cmd et appelez vos tests.

2
répondu kavinhuh 2015-03-26 03:44:41

@ Alexandros Spyropoulos, il m'a fallu un certain temps pour comprendre comment exécuter protractor et je pense que nous avons eu le même problème. Vous devez ouvrir un onglet terminal et exécuter WebDriver-manager start --standalone. Ensuite, ouvrez une autre étiquette de terminal et exécutez protractor ***.conf.js

1
répondu minisand 2015-03-18 18:14:11

Dans l'espoir que cela pourrait aider quelqu'un: j'avais eu le même problème - rencontrer ECONNREFUSED en utilisant grunt-protractor-runner. La nuance de mon cas est que j'exécutais tout mon environnement E2E (fichiers de test, application web et backend entier) dans un conteneur Docker.

J'ai essayé de lancer le rapporteur

  • avec et sans tâche grunt-protractor-webdriver supplémentaire pour mettre webdriver en marche ' manuellement '(pas de différence);
  • avec et sans activer les paramètres directConnect et keepAlive (contourner le sélénium et entraîner des accidents liés à Chromedriver, dont l'un a été décrit ici).

La solution était plutôt simple: augmenter la quantité de mémoire allouée au conteneur. Sur ma machine hôte Windows 10, j'ai effectué les étapes suivantes:

  1. exécutez VBoxManage.exe modifyvm default --memory 8192 (via un script shell personnalisé) avant de démarrer la machine docker (via un script Docker Quickstart, équivalent à docker-machine start). (Merci à Ce SO réponse).
  2. changer mon script shell pour exécuter mon conteneur par défaut, en ajoutant l'argument --shm-size=4G à ma commande docker run. ( Voir docs )
    • vous pouvez vérifier si cela a fonctionné en exécutant df -h dans votre machine invitée, en vérifiant la quantité de mémoire montée sur /dev/shm.

Par conséquent, je n'ai plus d'erreurs apparemment inexplicables telles que ECONNREFUSED.

0
répondu David Remie 2017-05-23 10:31:20

Si vous exécutez la démo protractor fournie, vous devriez essayer d'exécuter la configuration protractor dans la même invite de commande que selenium. Essayez d'exécuter selenium server et protractor séparément.

Assurez-vous que le premier sélénium s'exécute en suivant la commande.

webdriver-manager start --standalone

Et exécutez le rapporteur dans une fenêtre de commande séparée.

protractor conf.js

(dans mon cas conf.js était le fichier de configuration)

0
répondu Vicky Rajkumar 2017-03-09 22:13:09