angularjs - peticiones - No se puede ejecutar Prolongador-ECONNREFUSED connect ECONNREFUSED
peticiones ajax angular (10)
¿Estás ejecutando un servidor de selenio? El git README establece lo siguiente:
WebdriverJS no incluye de forma nativa el servidor de selenio; debe iniciar un servidor de selenio independiente. Todo lo que necesitas es el último selenium-server-standalone.
Estoy tratando de aprender AngularJS. Como parte de esto, quiero aprender a usar pruebas de extremo a extremo. Actualmente, tengo una estructura de directorios como esta:
node_modules
.bin
...
protractor
...
node_modules
.bin
adam-zip
glob
minijasminenode
optimist
saucelabs
selenium-webdriver
protractor
config.js
src
tests
test.e2e.js
Mi archivo config.js tiene el siguiente aspecto:
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 tiene el siguiente aspecto:
''use strict'';
describe(''My Sample'', function () {
driver = protractor.getInstance();
beforeEach(function () {
driver.get(''#/'');
});
it(''My First Test'', function () {
message = "Hello.";
expect(message).toEqual(''World.'');
});
});
Cuando intento ejecutar mis pruebas de extremo a extremo usando transportador, ejecuto el siguiente comando desde la línea de comandos:
node_modules/.bin/protractor protractor/config.js
Cuando ejecuto ese comando, recibo el siguiente error:
C:/Src/MyProject/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:1542
throw error;
^
Error: ECONNREFUSED connect ECONNREFUSED
at ClientRequest.<anonymous> (C:/Src/MyProject/node_modules/protractor/node_modules/selenium-webdriver/http/index.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:/Src/MyProject/node_modules/protractor/node_modules/selenium-webdriv
er/lib/webdriver/webdriver.js:130:49)
at Function.webdriver.WebDriver.createSession (C:/Src/MyProject/node_modules/protractor/node_modules/selenium-webdriver
/lib/webdriver/webdriver.js:110:30)
at Builder.build (C:/Src/MyProject/node_modules/protractor/node_modules/selenium-webdriver/builder.js:105:20)
at runJasmineTests (C:/Src/MyProject/node_modules/protractor/lib/runner.js:191:45)
at C:/Src/MyProject/node_modules/protractor/lib/runner.js:255:5
at C:/Src/MyProject/node_modules/protractor/node_modules/selenium-webdriver/lib/goog/base.js:1178:15
at webdriver.promise.ControlFlow.runInNewFrame_ (C:/Src/MyProject/node_modules/protractor/node_modules/selenium-webdriv
er/lib/webdriver/promise.js:1438:20)
at notify (C:/Src/MyProject/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:328:12)
at then (C:/Src/MyProject/node_modules/protractor/node_modules/selenium-webdriver/lib/webdriver/promise.js:377:7)
¿Qué estoy haciendo mal?
@Alexandros Spyropoulos, me tomó bastante tiempo descubrir cómo usar el transportador y creo que tuvimos el mismo problema. Debería abrir una pestaña de terminal y ejecutar webdriver-manager start --standalone. A continuación, abra otra etiqueta de terminal y ejecute transportador ***. Conf.js
Con la esperanza de que pueda ayudar a alguien: he tenido el mismo problema: encontrarme con ECONNREFUSED usando grunt-protractor-runner
. El matiz de mi caso es que estaba ejecutando todo mi entorno E2E (archivos de prueba, aplicaciones web y todo el back-end) dentro de un contenedor Docker.
Intenté ejecutar el transportador
- con y sin la tarea adicional de
grunt-protractor-webdriver
para activar y ejecutar webdriver ''manualmente'' (no hay diferencia); - con y sin habilitar las configuraciones
directConnect
ykeepAlive
(evitando Selenium y dando como resultado fallas relacionadas con Chromedriver, una de las cuales se describió here ).
La solución fue bastante simple: aumentar la cantidad de memoria asignada al contenedor. En mi máquina host con Windows 10, realicé los siguientes pasos:
- Ejecute
VBoxManage.exe modifyvm default --memory 8192
(mediante script de shell personalizado) antes de iniciar la docker-machine (a través de la secuencia de comandos Docker Quickstart, que es equivalente adocker-machine start
). (Gracias a esta respuesta SO ). - Cambiar mi script de shell para ejecutar mi contenedor predeterminado, agregando el
--shm-size=4G
al comando dedocker run
midocker run
. ( Ver documentos )- Puede verificar si funcionó ejecutando
df -h
en su máquina invitada, verificando la cantidad de memoria montada en/dev/shm
.
- Puede verificar si funcionó ejecutando
Como resultado, ya no tengo errores aparentemente inexplicables como ECONNREFUSED.
El mensaje de error se debe a lo siguiente:
[ECONNREFUSED] El intento de conectarse se ignoró (porque el objetivo no está escuchando conexiones) o se rechazó explícitamente.
Verifique la URL del administrador de Webdriver. La URL predeterminada es:
http://localhost:4444/wd/hub
Use un proceso en segundo plano para ejecutar el administrador de disco web, luego ejecute transportador:
Start-Process webdriver-manager start -passthru
protractor conf.js
Esto iniciará un servidor de Selenium y generará un montón de registros de información. Su prueba de transportador enviará solicitudes a este servidor para controlar un navegador local. Deja este servidor funcionando
Referencias
Lo conseguí trabajando eliminando la siguiente línea de mi config.js
seleniumAddress: ''http://localhost:4444/wd/hub'',
Lo resolví con --standalone flag:
webdriver-manager start --standalone
Para mí, esto había sucedido debido a versiones incompatibles de Node y Protractor.
Mi solución-
- Actualizar el nodo a la última versión (v7.0.0 en mi caso)
Siga los pasos dados aquí https://.com/a/19333717/1902831
- Instale la última versión de transportador (4.0.10 en mi caso) usando:
npm install -g transportador
- Abra otra terminal y ejecute estos comandos:
actualización webdriver-manager
webdriver-manager start
- Ejecute pruebas en otra terminal usando:
transportador conf.js
Si ejecuta la demostración del transportador proporcionado, debe intentar ejecutar la configuración del transportador en el mismo símbolo del sistema que el selenio. Intente ejecutar tanto el servidor de selenio como el transportador por separado.
Asegúrese de que el primer selenio se ejecute siguiendo el comando.
webdriver-manager start --standalone
Y ejecuta el transportador en una ventana de comando separada.
protractor conf.js
(En mi caso conf.js era el archivo de configuración)
Si está utilizando el complemento de npm transportador-webdriver grunt ( https://www.npmjs.org/package/grunt-protractor-webdriver ) puede experimentar el mismo tipo de error. Esto se debe a la terminación del controlador web justo antes de que termine la prueba. La prueba se ejecuta correctamente y luego aparece un mensaje como:
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)
Resuelvo esto usando la opción keepAlive en el plugin grunt.
Aquí está mi configuración de Gruntfile.js:
protractor_webdriver: {
options: {
keepAlive : true // True to keep the webdriver alive
},
start: {
},
},
...
Espero que esto ayude a alguien.
JM.
También me enfrenté al mismo problema, el truco que funcionó para mí es usar ventanas de dos cmd, manteniendo la abierta después de escribir el webdriver-manager start
y sin presionar la tecla enter (si se presiona la tecla enter el servidor de selenio se apaga, no lo haga saber por qué) abre otra ventana de cmd y llama a tus pruebas.