web-dev-qa-db-fra.com

rapporteur/sélénium "ne peut pas trouver chromedriver à"

J'ai installé le rapporteur après ce tutoriel et quand j'utilise webdriver-manager update, il dit:

Selenium standalone is up to date.
chromedriver is up to date.

toi quand j'essaye de faire les tests de rapporteur, il dit:

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

J'ai vérifié le fichier local.dp.js et constaté qu'il essayait de charger le lecteur chromedriver à partir de ..\node_modules\protractor\Selenium\chromedriver, mais il n'y avait qu'un fichier Zip vide appelé chromedriver_2 

J'ai donc téléchargé manuellement le pilote chromedriver et je l'ai copié à cet emplacement, produisant une nouvelle erreur:

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

Quelqu'un a des idées?

39
Andresch Serj

Si vous êtes derrière un proxy, essayez d'abord de configurer le proxy, puis lancez webdriver update:

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

webdriver-manager update
27
Sneh Tripathi

Je faisais également face à cette erreur et au moment de lire le didacticiel, il n’expliquait pas comment installer Rapporteur et WebDriver en tant que dépendances locales de votre projet (situées dans ./node_modules).

Si c'est ce que vous préférez (probablement parce que vous voudrez peut-être utiliser grunt-protractor-runner et exécuter votre test plus tard de manière continue, au besoin) au lieu de l'installer globalement, cette solution a fonctionné pour moi:

  1. Installez le rapporteur:

npm install protractor --save-dev

  1. Installez Selenium et les pilotes Web avec le gestionnaire de pilotes Web en exécutant:

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

Après avoir appelé cette commande, jetez un œil à ./node_modules/protractor et aux sous-dossiers pour le vérifier. Un dossier appelé Selenium avec le chromedriver dans doit y être disponible.

Notez que le rapporteur n’ayant pas été installé en tant que "global", son appel à partir de la ligne de commande entraîne l’erreur "commnad not found". Vous pouvez le lancer à la place avec cette commande: ./node_modules/protractor/bin/protractor

De plus, il peut être judicieux d’ajouter une définition de script à votre package.json, de sorte que vous installiez automatiquement toutes vos dépendances à partir de zéro, npm. Pour cela, ajoutez ceci à votre fichier package.json: "scripts": { "postinstall": "./node_modules/protractor/bin/webdriver-manager update" }

J'espère que cela vous aide plus loin ...

62
stitakis

J'ai suivi ce tutoriel et j'ai eu le même problème. Le problème ici était que vous deviez spécifier le chemin d'accès à votre exe de pilotes de jar et chrome Selenium dans votre fichier de configuration de rapporteur. Mine a été installé globalement dans le dossier AppData. Le fichier mineprotractor.confg.jsressemble à ceci:

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/'

};

Cela semblait faire l'affaire.

23
Chester Rivas

Bon sang, tellement de réponses ...

Sur le Mac, cela a fonctionné pour moi:

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

Il doit y avoir un meilleur moyen de régler le problème, mais au moins, cela me laisse avancer.

13
bronson

Après avoir regardé pendant un moment, j'ai remarqué que le fichier package.json inclus dans le rapport de phonecat angulaire définit une tâche update-webdriver.

Exécuter cette tâche (avec npm run update-webdriver) a corrigé le rapporteur pour moi.

7
turtlemonvh

Le pilote Chrome peut exister n'importe où, mais le coureur de rapporteur semble s'attendre à ce qu'il se trouve à l'emplacement où il existerait si vous l'avez installé via "webdriver-manager". Ainsi, il peut être installé avec "npm install chromedriver", ce qui le placera dans un emplacement différent, tel que: /Usr/local/lib/node_modules/chromedriver/lib/chromedriver/chromedriver

Dans ce cas, le fichier de configuration devra être configuré pour regarder à cet emplacement, mais il existe une solution plus simple ...

Si webdriver-manager ne parvient pas à télécharger chromedriver ou Selenium-standalone, il y aura des fichiers de 0 octet à l'emplacement par défaut, ce qui provoquera cette erreur. Malheureusement, cela peut arriver avec des problèmes liés au proxy. Une fois que les fichiers corrompus sont là, le processus de vérification de la mise à jour pense que tout est à jour, mais ce n’est pas le cas.

En outre, la configuration du proxy pour webdriver-manager est différente de celle de npm. Pour webdriver-manager, la syntaxe permettant d'effectuer une mise à jour serait la suivante:

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

L'effacement des fichiers de 0 octet et la réexécution de cette commande de mise à jour doivent remplacer les fichiers par leurs données correctes. L'emplacement sur ma machine pour ces fichiers est:

/usr/local/lib/node_modules/protractor/Selenium
4
Sean Aitken

J'ai rencontré un problème similaire lorsque j'ai suivi le tutoriel d'angular:

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

et vérifié le code en conséquence:

git checkout -f step-3

Dans angular-phonecat/package.json devDependencies, la version du rapporteur est "~ 1.0.0", ce qui a amené npm à toujours télécharger un fichier corrompu:

angular-phonecat/module_noeud/rapporteur/sélénium/chromedriver_2.10.Zip

Parce que le fichier Zip ci-dessus ne peut pas être ouvert correctement, l'erreur ci-dessous existe:

/Users/karlli/dev/projects/angular-phonecat/node_modules/protractor/node_modules/adm-Zip/zipFile.js:66 throw Utils.Errors.INVALID_FORMAT; ^ Format Zip non valide ou non pris en charge. Aucun en-tête END trouvé

Il y a 2 solutions:

  1. lien symbolique le correct à la place

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

Merci @bronson :-)

  1. mettre à niveau la version de dépendance du protractor Après plusieurs tests, j'ai trouvé que la version minimale exploitable est 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
karl li

Dans mon cas, il s’agissait du fichier Zip chromedriver endommagé.

J'ai fait les démarches suivantes pour résoudre ce problème.

  1. Téléchargé chromedriver Zip à partir de Page de téléchargement de ChromeDriver

  2. A extrait ce fichier Zip à "node_modules\protractor\Selenium \" (c.-à-d. Copié "chromedriver.exe" à cet emplacement)

Ensuite, il a commencé à fonctionner comme prévu. J'espère que ceci vous aidera.

2
Yuvraj Patil

Sur mac osx, modifiez la version de package.json pour rapporteur en "*", supprimez node_modules et réinstallez-la.

1
Wim Philipsen

Si vous utilisez Windows, vous devrez peut-être définir une variable d'environnement HTTP_PROXY. Essayez ces étapes dans l'invite de commande, en supposant que votre serveur proxy s'appelle http://proxy.you.com:8080.

  1. SETX HTTP_PROXY http://proxy.you.com:8080 (Il devrait renvoyer SUCCESS: la valeur spécifiée a été enregistrée. Vous pouvez également le faire dans Propriétés système ... Avancé ... Variables d'environnement)
  2. Fermez la fenêtre d'invite de commande et rouvrez-la. ( Cela garantit que votre nouvelle variable d'environnement sera utilisée dans votre session .)
  3. Maintenant, lancez votre commande: webdriver-manager update 
1
James Lawruk

Pour moi, les commandes npm install et npm run update-webdriver n'arrêtaient pas de télécharger le fichier corrompu Chromedriver_x.xx.Zip. J'ai donc essayé d'exécuter webdriver-manager update, et cela a fonctionné.

0
Yhnert

Le fichier Selenium autonome était corrompu, je devais donc l'écraser pour le copier directement dans le dossier.

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

De plus, je devais renommer le chromedriver, il est donc appelé "chromedriver" et non "chromedriver.exe".

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

Ceci est partiellement dû au fait que je n’ai pas défini le proxy dans Webdriver. Vous pouvez voir la solution à cela dans la réponse acceptée .

0
Andresch Serj

Sur Windows, j'avais des problèmes avec un projet qui fonctionnait bien sur mon mac. La commande qui a finalement été faite pour moi était:

node node_modules\protractor\bin\webdriver-manager update
0
eflat