transportador / selenio "no se pudo encontrar chromedriver en" (en Windows)


Instalé protractor siguiendo este tutorial y cuando uso webdriver-manager update dice:

selenium standalone is up to date.
chromedriver is up to date.

Cuando trato de ejecutar las pruebas de transportador, dice:

C:\Users\****\AppData\Roaming\npm\node_modules\protractor\lib\driverProviders\local.dp.js:42
            throw new Error('Could not find chromedriver at ' +
                  ^
    Error: Could not find chromedriver at C:\Users\****\AppData\Roaming\npm\node_modules\protractor\selenium\chromedriver.exe
        at LocalDriverProvider.addDefaultBinaryLocs_ (C:\Users\****\AppData\Roaming\npm\node_modules\protractor\lib\driverProviders\local.dp.js:42:15)
        at LocalDriverProvider.setupEnv (C:\Users\****\AppData\Roaming\npm\node_modules\protractor\lib\driverProviders\local.dp.js:59:8)
        at Runner.run (C:\Users\****\AppData\Roaming\npm\node_modules\protractor\lib\runner.js:308:31)
        at process.<anonymous> (C:\Users\****\AppData\Roaming\npm\node_modules\protractor\lib\runFromLauncher.js:32:14)
        at process.EventEmitter.emit (events.js:98:17)
        at handleMessage (child_process.js:318:10)
        at Pipe.channel.onread (child_process.js:345:11)
    [launcher] Runner Process Exited With Error Code: 8

He comprobado el local.dp.js y vio que trató de cargar el chromedriver de ..\node_modules\protractor \ selenium \ chromedriver pero solo había un archivo zip vacío llamado chromedriver_2.9.

Así que descargué el chromedriver manualmente y lo copié a esta ubicación, produciendo un nuevo error:

C:\Users\****\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\lib\webdriver\promise.js:1549
      throw error;
            ^
Error: Server exited with 1
    at Error (<anonymous>)
    at ChildProcess.onServerExit (C:\Users\****\AppData\Roaming\npm\node_modules\protractor\node_modules\selenium-webdriver\remote\index.js:193:11)
    at ChildProcess.g (events.js:180:16)
    at ChildProcess.EventEmitter.emit (events.js:98:17)
    at Process.ChildProcess._handle.onexit (child_process.js:797:12)
[launcher] Runner Process Exited With Error Code: 8

¿Alguien tiene alguna Idea?

Author: Andresch Serj, 2014-03-05

14 answers

Si está detrás de un proxy, intente configurar primero el proxy y luego ejecute webdriver update:

npm config set proxy http://<proxy.com>:port

webdriver-manager update
 25
Author: Sneh Tripathi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-12-12 13:21:35

También me enfrentaba a este error y cuando leí el tutorial, no cubría cómo instalar protractor y el webdriver como dependencias locales a su proyecto (que se encuentran en ./ node_modules).

Si esto es lo que prefiere (probablemente porque es posible que desee usar grunt-protractor-runner y ejecutar su prueba más tarde de una manera de compilación continua como necesito) en lugar de instalarlo globalmente, esta solución funcionó para mí:

  1. Instalar transportador:

npm install protractor --save-dev

  1. Instale selenium y los webdrivers con el webdriver-manager ejecutando:

./node_modules/protractor/bin/webdriver-manager update

Después de llamar a este comando, eche un vistazo a ./node_modules/protractor y a sus subcarpetas para verificarlo. Una carpeta llamada selenium con el chromedriver debería estar disponible en ella.

Tenga en cuenta que como protractor no se instaló como "global", llamarlo desde la línea de comandos resultará en un error "commnad not found". Puedes ejecutarlo en su lugar con esto comando: ./node_modules/protractor/bin/protractor

Además, podría ser una buena idea agregar una definición de script a su paquete.json, para que la próxima vez que instale todas sus dependencias desde cero, npm configure los webdrivers automáticamente. Para eso agregue esto a su paquete.archivo json: "scripts": { "postinstall": "./node_modules/protractor/bin/webdriver-manager update" }

Espero que esto te ayude aún más...

 62
Author: stitakis,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-07-09 19:07:13

Seguí ese tutorial y tuve el mismo problema. El problema aquí era que necesita especificar la ruta a su selenium jar y chrome driver exe en su archivo de configuración de transportador. La mía se instaló globalmente en la carpeta AppData, así que esto es lo que la mía transportador.confg.js el archivo se ve así:

exports.config = {

specs: [
    'test/e2e/**/*.js'
],

chromeDriver: 'C:/Users/<username>/AppData/Roaming/npm/node_modules/protractor/selenium/chromedriver.exe',

seleniumServerJar: 'C:/Users/<username>/AppData/Roaming/npm/node_modules/protractor/selenium/selenium-server-standalone-2.40.0.jar',

baseUrl: 'http://localhost:9000/'

};

Eso parecía hacer el truco.

 23
Author: Chester Rivas,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-04-01 16:16:35

Jesús, tantas respuestas...

En el Mac, esto funcionó para mí:

$ npm install chromedriver
$ ln -sf ~/angular-phonecat/node_modules/chromedriver/bin/chromedriver node_modules/protractor/selenium/chromedriver.exe

Tiene que haber una mejor manera de arreglarlo, pero al menos esto me deja seguir adelante.

 13
Author: bronson,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-08-01 22:03:22

Después de mirar alrededor por un tiempo, me di cuenta de que el archivo package.json incluido en el repositorio angular phonecat define una tarea update-webdriver.

Ejecutando esa tarea (con npm run update-webdriver) se arregló el transportador para mí.

 7
Author: turtlemonvh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-04-01 23:40:37

El controlador de Chrome puede existir en cualquier lugar, pero el corredor transportador parece esperar que esté en la ubicación donde existiría si lo instaló a través de "webdriver-manager". Por lo tanto, se puede instalar con "npm install chromedriver", que lo colocará en una ubicación diferente, como: /usr/local/lib/node_modules/chromedriver/lib/chromedriver/chromedriver

En este caso, el archivo de configuración deberá configurarse para que se vea en esta ubicación, pero es probable que solución...

Si webdriver-manager no descarga el chromedriver o selenium-standalone, habrá archivos de 0 bytes en la ubicación predeterminada, lo que causará este error. Desafortunadamente, esto puede suceder con problemas relacionados con proxy. Una vez que los archivos corruptos están allí, el proceso de verificación de actualización piensa que todo está actualizado, pero no lo está.

Además, la configuración del proxy para webdriver-manager es diferente a npm. Para webdriver-manager, la sintaxis para hacer una actualización sería be:

sudo webdriver-manager update --proxy=http://<your proxy server>/

Borrar los archivos de 0 bytes y volver a ejecutar este comando de actualización debería reemplazar los archivos con sus datos correctos. La ubicación en mi máquina para estos archivos es:

/usr/local/lib/node_modules/protractor/selenium
 4
Author: Sean Aitken,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2014-07-28 15:06:29

Me encontré con un problema similar cuando seguí el tutorial de angular:

Https://docs.angularjs.org/tutorial/step_03

Y comprobó el código en consecuencia:

git checkout -f step-3

Dentro de angular-phonecat/package.json devDependencies, la versión de transportador es "~1.0.0", lo que causó que npm siempre descargue un archivo dañado:

Angular-phonecat/node_modules/protractor/selenium/chromedriver_2.10.zip

Debido a que el archivo zip anterior no se puede abrir correctamente, existe el siguiente error:

/Users/karlli/dev/projects/angular-phonecat/node_modules/protractor/node_modules/adm-zip/zipFile.js: 66 lanza Utils.Error.INVALID_FORMATO; ^ Formato zip no válido o no compatible. No se encontró encabezado FINAL

Hay 2 soluciones:

  1. símbolo enlace el correcto en su lugar

ln -sf ~/dev/projects/angular-phonecat/node_modules/chromedriver/bin/chromedriver node_modules/protractor/selenium/chromedriver.exe

Gracias @ bronson: -)

  1. actualizar la versión de dependencias del transportador Después de varias pruebas, encontrado la versión mínima viable es 1.1.0.

Angular-phonecat/package.json

"devDependencies": {
    "karma": "^0.12.16",
    "karma-chrome-launcher": "^0.1.4",
    "karma-jasmine": "^0.1.5",
    "protractor": "~1.1.0",
    "http-server": "^0.6.1",
    "tmp": "0.0.23",
    "bower": "^1.3.1",
    "shelljs": "^0.2.6"
},
 3
Author: karl li,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-05-15 14:27:05

En mi caso fue el debido al archivo zip chromedriver dañado.

He hecho las siguientes cosas para resolver este problema.

  1. Descargado chromedriver zip desde ChromeDriver Página de descarga

  2. Extraído ese archivo zip en "node_modules\protractor\selenium\" (es decir, copiado "chromedriver.exe " a esta ubicación)

Luego comenzó a funcionar como se esperaba. Espero que esto te ayude.

 2
Author: Yuvraj Patil,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-03-23 08:12:08

Si está en Windows, es posible que necesite establecer una variable de entorno HTTP_PROXY. Pruebe estos pasos en el símbolo del sistema, asumiendo que su servidor proxy es http://proxy.you.com:8080.

  1. SETX HTTP_PROXY http://proxy.you.com:8080 (Debe devolver el ÉXITO: Se guardó el valor especificado. También puede hacer esto en Propiedades del sistema...Avanzado...Variables de Entorno)
  2. Cierre la ventana del símbolo del sistema y vuelva a abrir. ( Esto asegura que su nueva variable de entorno se utilizará en su sesión.)
  3. Ahora ejecuta tu orden: webdriver-manager update
 1
Author: James Lawruk,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-02-09 20:47:08

En mac osx, cambie la versión del paquete.json for protractor to"*", remove node_modules, and install again.

 1
Author: Wim Philipsen,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-05 10:06:09

El archivo selenium independiente estaba dañado, así que tuve que sobrescribirlo, copiándolo directamente en la carpeta.

C:/Users/****/AppData/Roaming/npm/node_modules/protractor/selenium/

También tuve que cambiar el nombre del chromedriver por lo que en realidad se llama "chromedriver" y no "chromedriver.exe".

C:/Users/****/AppData/Roaming/npm/node_modules/protractor/selenium/chromedriver

Esto sucedió parcialmente porque no configuré el proxy en webdriver. Puede ver la Solución para esto en la respuesta aceptada.

 0
Author: Andresch Serj,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-05-23 11:46:36

Para mí, los comandos npm install y npm run update-webdriver simplemente seguían descargando el archivo corrupto Chromedriver_x.xx.zip. Así que intenté correr webdriver-manager update, y funcionó.

 0
Author: Yhnert,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-08 09:10:33

En Windows, estaba teniendo problemas con un proyecto que funcionaba bien en mi mac. El comando que finalmente lo hizo para mí fue:

node node_modules\protractor\bin\webdriver-manager update
 0
Author: eflat,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-02-21 19:10:23

Simplemente agregue el "preprotractor":" npm install chromedriver" a su paquete.json

Que cargará el último todo el tiempo.

 -3
Author: user1694812,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-30 12:23:08