web-dev-qa-db-ja.com

分度器/ Seleniumは「Chromedriverを見つけることができませんでした」(Windowsの場合)

このチュートリアル に従って分度器をインストールし、webdriver-manager updateを使用すると、次のように表示されます。

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

分度器テストを実行しようとすると、それは言う:

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

local.dp.jsを確認し、..\node_modules \からchromedriverをロードしようとしたことがわかりました。 protractor\Selenium\chromedriverしかし、chromedriver_2.9と呼ばれる空のZipファイルのみがありました。

だから私はchromedriverを手動でダウンロードし、この場所にコピーして、新しいエラーを生成しました:

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

誰でもアイデアはありますか?

42
Andresch Serj

プロキシの背後にいる場合は、まずプロキシを設定してから、webdriver updateを実行してください:

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

webdriver-manager update
26
Sneh Tripathi

私もこのエラーに直面していたので、チュートリアルを読むまでに、プロジェクト(./node_modulesにある)にローカルの依存関係として分度器とWebドライバーをインストールする方法を説明していませんでした。

これをグローバルにインストールするのではなく(おそらく、必要に応じてgrunt-protractor-runnerを使用して、連続ビルド方式でテストを実行するため)、このソリューションがうまくいきました:

  1. 分度器をインストールする:

npm install protractor --save-dev

  1. 以下を実行して、webdriver-managerでSeleniumとwebdriverをインストールします。

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

このコマンドを呼び出した後、./node_modules/protractorおよびそれを確認するためのサブフォルダー。 Seleniumが入ったchromedriverというフォルダーが使用可能になります。

分度器は「グローバル」としてインストールされていないため、コマンドラインから分度器を呼び出すと「コマンドが見つかりません」というエラーが発生します。代わりに次のコマンドで実行できます:./node_modules/protractor/bin/protractor

さらに、package.jsonにスクリプト定義を追加して、次にすべての依存関係をゼロからインストールするときに、npmがwebdriversを自動的にセットアップすることをお勧めします。そのため、これをpackage.jsonファイルに追加します:"scripts": { "postinstall": "./node_modules/protractor/bin/webdriver-manager update" }

これがあなたをさらに助けることを願っています...

64
stitakis

私はそのチュートリアルに従いましたが、同じ問題がありました。ここでの問題は、Selenium jarへのパスと、分度器設定ファイルでchrome driver exeを指定する必要があることです。私のものはAppDataフォルダにグローバルにインストールされたので、これは私の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/'

};

これでうまくいくように見えました。

23
Chester Rivas

うん、たくさんの答え...

Macでは、これは私のために働いた:

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

それを修正するより良い方法になるGOTがありますが、少なくともこれで先に進みます。

13
bronson

しばらく見て回った後、package.jsonファイルに含まれる angular phonecat repoupdate-webdriver 仕事。

そのタスクの実行(npm run update-webdriver)分度器を修正しました。

7
turtlemonvh

Chromeドライバーは任意の場所に存在できますが、分度器ランナーは、「webdriver-manager」を使用してインストールした場合に存在する場所にあることを期待しているようです。 「npm install chromedriver」を使用してインストールします。これにより、/ usr/local/lib/node_modules/chromedriver/lib/chromedriver/chromedriverなどの別の場所に配置されます。

この場合、設定ファイルはこの場所を探すように設定する必要がありますが、もっと簡単な解決策があります...

Webdriver-managerがchromedriverまたはSelenium-standaloneのダウンロードに失敗すると、デフォルトの場所に0バイトのファイルが存在し、このエラーが発生します。残念ながら、これはプロキシ関連の問題で発生する可能性があります。破損したファイルが存在すると、更新チェックプロセスはすべてが最新であると見なしますが、最新ではありません。

また、webdriver-managerのプロキシ設定はnpmとは異なります。 webdriver-managerの場合、更新を行う構文は次のとおりです。

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

0バイトのファイルを消去し、この更新コマンドを再実行すると、ファイルが正しいデータに置き換えられます。これらのファイルのマシン上の場所は次のとおりです。

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

アンギュラーのチュートリアルに従ったときに、同様の問題が発生しました。

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

それに応じてコードをチェックアウトしました:

git checkout -f step-3

Angle-phonecat/package.json devDependencies内では、分度器のバージョンは「〜1.0.0」であるため、npmは常に破損したファイルをダウンロードします。

angular-phonecat/node_modules/protractor/Selenium/chromedriver_2.10.Zip

上記のZipファイルを適切に開くことができないため、以下のエラーが存在します。

/Users/karlli/dev/projects/angular-phonecat/node_modules/protractor/node_modules/adm-Zip/zipFile.js:66 throw Utils.Errors.INVALID_FORMAT; ^無効またはサポートされていないZip形式。 ENDヘッダーが見つかりません

2つの解決策があります。

  1. 代わりに正しいものをシンボルリンク

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

ありがとう@bronson :-)

  1. 分度器の依存バージョンをアップグレードするいくつかのテストを行った結果、最小の実行可能なバージョンは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

私の場合、破損したchromedriver Zipファイルが原因でした。

この問題を解決するために次のことを行いました。

  1. ChromeDriverダウンロードページ からchromedriver Zipをダウンロードしました

  2. "node_modules\protractor\Selenium \"にあるZipファイルを抽出しました(つまり、この場所に "chromedriver.exe"をコピーしました)

その後、期待どおりに動作し始めました。これがお役に立てば幸いです。

2
Yuvraj Patil

Mac osxでは、分度器のpackage.jsonのバージョンを「*」に変更し、node_modulesを削除して、再度インストールします。

1
Wim Philipsen

Windowsの場合、HTTP_PROXY環境変数を設定する必要がある場合があります。プロキシサーバーがhttp://proxy.you.com:8080であると仮定して、コマンドプロンプトでこれらの手順を試してください。

  1. SETX HTTP_PROXY http://proxy.you.com:8080(SUCCESSを返す必要があります:指定された値が保存されました。システムプロパティ...詳細...環境変数でこれを行うこともできます)
  2. コマンドプロンプトウィンドウを閉じて、再度開きます。 (これにより、セッションで新しい環境変数が使用されるようになります。)
  3. 次のコマンドを実行します:webdriver-manager update
1
James Lawruk

私にとってはnpm installおよびnpm run update-webdriverコマンドは、破損したChromedriver_x.xx.Zipファイル。そこで、webdriver-manager update、そしてそれは働いた。

0
Yhnert

スタンドアロンのSeleniumファイルは破損していたため、上書きしてフォルダーに直接コピーする必要がありました。

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

また、私は実際に「chromedriver.exe」ではなく「chromedriver」と呼ばれるように、chromedriverの名前を変更する必要がありました。

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

これは、webdriverでプロキシを設定しなかったために部分的に発生しました。この解決策は 受け入れられた答え で見ることができます。

0
Andresch Serj

Windowsでは、Macで問題なく実行されたプロジェクトで問題が発生していました。最終的にそれを完了させたコマンドは次のとおりです。

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