web-dev-qa-db-de.com

winkelmesser/Selen "Chromedriver konnte nicht gefunden werden" (unter Windows)

Ich habe den Winkelmesser nach diesem Tutorial installiert und wenn ich das Update des Webdriver-Managers verwende, heißt es:

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

wenn ich versuche, die Winkelmesser-Tests durchzuführen, heißt es:

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

Ich habe local.dp.js überprüft und festgestellt, dass versucht wurde, den Chromedriver von ..\node_modules\protractor\Selenium\chromedriverzu laden.chromedriver_2.9

Also habe ich den Chromdriver manuell heruntergeladen und an diesen Speicherort kopiert, was zu einem neuen Fehler führte:

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

Jemand irgendwelche Ideen?

39
Andresch Serj

Wenn Sie sich hinter einem Proxy befinden, stellen Sie zunächst den Proxy ein und führen Sie dann das Webdriver-Update aus:

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

webdriver-manager update
27
Sneh Tripathi

Ich war auch mit diesem Fehler konfrontiert und als ich das Tutorial gelesen hatte, ging es nicht darum, wie der Winkelmesser und der Web-Treiber als lokale Abhängigkeiten zu Ihrem Projekt installiert werden sollten (die sich in ./node_modules befinden).

Wenn Sie dies bevorzugen (wahrscheinlich, weil Sie einen Grunt-Winkelmesser-Läufer verwenden und den Test später nach Bedarf kontinuierlich ausführen möchten), anstatt ihn global zu installieren, funktionierte diese Lösung für mich:

  1. Winkelmesser installieren:

npm install protractor --save-dev

  1. Installieren Sie Selenium und die Webtreiber mit dem Webtreiber-Manager, indem Sie Folgendes ausführen:

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

Nach dem Aufruf dieses Befehls sollten Sie sich ./node_modules/protractor und die Unterordner ansehen, um es zu überprüfen. Ein Ordner namens Selenium mit der chromedriver in sollte darin verfügbar sein.

Da der Winkelmesser nicht als "global" installiert wurde, führt der Aufruf über die Befehlszeile zu einem Fehler "commnad not found". Sie können es stattdessen mit dem folgenden Befehl ausführen: ./node_modules/protractor/bin/protractor

Außerdem kann es sinnvoll sein, Ihrem package.json eine Skriptdefinition hinzuzufügen, so dass Sie beim nächsten Mal alle Abhängigkeiten von Null an installieren und die Web-Treiber automatisch von npm eingerichtet werden. Dazu fügen Sie dies zu Ihrer package.json-Datei hinzu: "scripts": { "postinstall": "./node_modules/protractor/bin/webdriver-manager update" }

Hoffe das hilft dir weiter ...

62
stitakis

Ich folgte diesem Tutorial und hatte das gleiche Problem. Das Problem hierbei war, dass Sie den Pfad zu Ihrem Selenium-Gefäß und Chrome-Treiberexe in Ihrer Winkelmesser-Konfigurationsdatei angeben müssen. Meine wurde global im AppData-Ordner installiert, so dass meineprotractor.confg.js-Datei so aussieht:

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

};

Das schien den Trick zu tun.

23
Chester Rivas

Meine Güte, so viele Antworten ...

Auf dem Mac hat das für mich funktioniert:

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

Es gibt GOT, um eine bessere Lösung zu finden, aber zumindest das lässt mich weitergehen.

13
bronson

Nachdem ich mich eine Weile umgesehen hatte, fiel mir auf, dass die package.json-Datei in the angle phonecat repo eine update-webdriver-Aufgabe definiert.

Die Ausführung dieser Aufgabe (mit npm run update-webdriver) fixierte den Winkelmesser für mich.

7
turtlemonvh

Der Chrome-Treiber kann an einem beliebigen Ort vorhanden sein, der Winkelmesser-Läufer scheint jedoch an dem Ort zu sein, an dem er vorhanden wäre, wenn Sie ihn über den "Web-Treiber-Manager" installiert hätten. Daher kann es mit "npm install chromedriver" installiert werden, wodurch es an einem anderen Speicherort abgelegt wird, z

In diesem Fall muss die Konfigurationsdatei so eingestellt werden, dass sie an diesem Ort sucht, aber es gibt eine einfachere Lösung ...

Wenn der Webdriver-Manager den Chromedriver oder Selenium-Standalone nicht herunterladen kann, befinden sich am Standardspeicherort 0-Byte-Dateien, die diesen Fehler verursachen. Dies kann leider bei Problemen mit dem Proxy passieren. Sobald die beschädigten Dateien vorhanden sind, geht der Update-Überprüfungsprozess davon aus, dass alles auf dem neuesten Stand ist, aber nicht.

Auch die Proxy-Konfiguration für den Webdriver-Manager unterscheidet sich von npm. Für den Webtreiber-Manager lautet die Syntax für ein Update:

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

Wenn Sie die 0-Byte-Dateien löschen und diesen Aktualisierungsbefehl erneut ausführen, sollten die Dateien durch ihre korrekten Daten ersetzt werden. Der Speicherort für diese Dateien auf meinem Computer lautet:

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

Ich bin auf ein ähnliches Problem gestoßen, als ich das Tutorial von angle folgte:

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

und checkte den Code entsprechend aus:

git checkout -f step-3

Innerhalb von devDependencies von angle-phonecat/package.json lautet die Protractor-Version "~ 1.0.0", weshalb npm immer eine beschädigte Datei herunterlädt:

winkelphonecat/Knotenmodule/Winkelmesser/Selen/Chromdriver_2.10.Zip

Da die oben genannte Zip-Datei nicht richtig geöffnet werden kann, ist ein Fehler aufgetreten:

/Users/karlli/dev/projects/angular-phonecat/node_modules/protractor/node_modules/adm-Zip/zipFile.js:66 werfen Sie Utils.Errors.INVALID_FORMAT; ^ Ungültiges oder nicht unterstütztes Zip-Format. Es wurde kein END-Header gefunden

Es gibt 2 Lösungen:

  1. symbol-Verknüpfung stattdessen das richtige

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

Danke @bronson :-)

  1. upgrade-Abhängigkeitsversion der Abhängigkeitsversion Nach mehreren Tests habe ich festgestellt, dass die minimal funktionsfähige Version 1.1.0 ist.

wink-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

In meinem Fall war es die beschädigte Chromedriver-Zip-Datei.

Ich habe folgende Schritte unternommen, um dieses Problem zu lösen.

  1. Heruntergeladene Chromedriver Zip von ChromeDriver Download-Seite

  2. Diese Zip-Datei wurde unter "node_modules\protractor\Selenium" extrahiert (d. H. Kopierte "chromedriver.exe" an diesen Speicherort).

Dann begann es wie erwartet zu arbeiten. Hoffe, das wird dir helfen.

2
Yuvraj Patil

Ändern Sie unter mac osx die Version in package.json für Winkelmesser in "*", entfernen Sie node_modules und installieren Sie sie erneut.

1
Wim Philipsen

Unter Windows müssen Sie möglicherweise eine HTTP_PROXY-Umgebungsvariable festlegen. Führen Sie diese Schritte in der Eingabeaufforderung aus, vorausgesetzt, Ihr Proxy-Server ist http://proxy.you.com:8080.

  1. SETX HTTP_PROXY http://proxy.you.com:8080 (Es sollte ERFOLG zurückgeben: Der angegebene Wert wurde gespeichert. Sie können dies auch in den Systemeigenschaften ... Erweiterte ... Umgebungsvariablen tun)
  2. Schließen Sie das Eingabeaufforderungsfenster und öffnen Sie es erneut. ( Dies stellt sicher, dass Ihre neue Umgebungsvariable in Ihrer Sitzung verwendet wird .)
  3. Führen Sie nun Ihren Befehl aus: webdriver-manager update 
1
James Lawruk

Für mich haben die Befehle npm install und npm run update-webdriver die korrupte Chromedriver_x.xx.Zip-Datei einfach heruntergeladen. Also habe ich versucht, webdriver-manager update auszuführen, und es hat funktioniert.

0
Yhnert

Die selbständige Selenium-Datei war beschädigt, also musste ich sie überschreiben und direkt in den Ordner kopieren.

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

Ich musste auch den Chromedriver umbenennen, so dass er eigentlich "Chromedriver" und nicht "Chromedriver.exe" heißt.

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

Dies ist teilweise darauf zurückzuführen, dass ich den Proxy nicht in den Web-Treiber gesetzt habe. Sie können die Lösung dafür in der akzeptierten Antwort sehen.

0
Andresch Serj

Unter Windows hatte ich Probleme mit einem Projekt, das auf meinem Mac einwandfrei lief. Der Befehl, der es endlich für mich erledigt hat, war:

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