tutorial locators example español windows angularjs selenium selenium-chromedriver protractor

windows - locators - protractor wait



transportador/selenio "no se pudo encontrar el conductor cromado en"(en Windows) (14)

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

Ejecutar esa tarea (con npm run update-webdriver ) fijó transportador para mí.

Instalé transportador siguiendo este tutorial y cuando uso la actualización de webdriver-manager dice:

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

Tú cuando intento 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

Comprobé el archivo local.dp.js y vi que intentaba cargar el controlador cromado desde .. / node_modules / transportador / selenio / chromedriver pero solo había un archivo zip vacío llamado chromedriver_2.9 .

Así que descargué el cromedriver 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 alguna Ideas?


Dios, muchas respuestas ...

En la Mac, esto funcionó para mí:

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

Debe haber una mejor manera de solucionarlo, pero al menos esto me permite seguir adelante.


El archivo de selenio independiente estaba dañado, así que tuve que sobrescribirlo y copiarlo en la carpeta directamente.

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

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

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

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


El controlador de Chrome puede existir en cualquier ubicación, pero el corredor del 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 ubicará en una ubicación diferente, como por ejemplo: / usr / local / lib / node_modules / chromedriver / lib / chromedriver / chromedriver

En este caso, el archivo de configuración deberá configurarse para buscar en esta ubicación, pero hay una solución más simple ...

Si webdriver-manager no puede descargar el cromedriver o el selenio-standalone, habrá archivos de 0 bytes en la ubicación predeterminada, lo que provocará este error. Desafortunadamente, esto puede suceder con problemas relacionados con el proxy. Una vez que los archivos corruptos están allí, el proceso de revisión de actualización piensa que todo está actualizado, pero no es así.

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

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

Eliminar 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


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

node node_modules/protractor/bin/webdriver-manager update


En mac osx, cambie la versión en package.json por transportador a "*", elimine node_modules, e instálelo nuevamente.


En mi caso fue debido al archivo zip del motorista cromado dañado.

He hecho lo siguiente para resolver este problema.

  1. Zip cromado descargado desde la página de descarga de ChromeDriver

  2. Extraído ese archivo comprimido en "node_modules / transporter / selenium /" (es decir Copied "chromedriver.exe" a esta ubicación)

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


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

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

y revisó el código en consecuencia:

git checkout -f step-3

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

angular-phonecat / node_modules / transportador / selenio / chromedriver_2.10.zip

Como el archivo comprimido 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 throw Utils.Errors.INVALID_FORMAT; ^ Formato zip inválido o no compatible. No se encontró ningún encabezado END

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 dependencia de transportador Después de varias pruebas, encontré que 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" },


Para mí, los npm install y npm run update-webdriver siguieron descargando el archivo corrupto Chromedriver_x.xx.zip . Así que intenté ejecutar la webdriver-manager update , y funcionó.


Seguí ese tutorial y tuve el mismo problema. El problema aquí es que debe especificar la ruta de acceso a su jar de selenio y su controlador de Chrome en su archivo de configuración del transportador. El mío se instaló globalmente en la carpeta AppData, así que este es el aspecto del archivo de mina protractor.confg.js :

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 pareció hacer el truco.


Si está detrás de un proxy, intente primero configurar el proxy y luego ejecute la actualización de webdriver:

npm config set proxy http://<proxy.com>:port webdriver-manager update


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

  1. SETX HTTP_PROXY http://proxy.you.com:8080 (Debería devolver ÉXITO: ​​Se guardó el valor especificado. También puede hacerlo en Propiedades del sistema ... Avanzadas ... Variables de entorno)
  2. Cierre la ventana del símbolo del sistema y vuelva a abrir. ( Esto garantiza que su nueva variable de entorno se utilizará en su sesión ).
  3. Ahora ejecute su comando: webdriver-manager update

Simplemente agregue el "preautorizador": "npm install chromedriver" en su paquete. Json

Eso descargará el último todo el tiempo.


También me enfrenté a este error y para cuando leí el tutorial, no cubría cómo instalar transportador y el controlador de la web como dependencias locales de su proyecto (que se encuentran en ./node_modules).

Si esto es lo que prefieres (probablemente porque querrías usar grunt-transportador-corredor y ejecutar tu prueba más tarde de forma continua como necesito) en lugar de instalarlo globalmente, esta solución funcionó para mí:

  1. Instalar transportador:

npm install protractor --save-dev

  1. Instale el selenio y los controladores de la web con el administrador de la web ejecutando:

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

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

Tenga en cuenta que como el transportador no se instaló como "global", llamarlo desde la línea de comando dará como resultado un error "commnad no encontrado". Puede ejecutarlo en su lugar con este 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 controladores web automáticamente. Para eso agregue esto a su archivo package.json: "scripts": { "postinstall": "./node_modules/protractor/bin/webdriver-manager update" }

Espero que esto te ayude más ...