このチュートリアル に従って分度器をインストールし、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
誰でもアイデアはありますか?
プロキシの背後にいる場合は、まずプロキシを設定してから、webdriver updateを実行してください:
npm config set proxy http://<proxy.com>:port
webdriver-manager update
私もこのエラーに直面していたので、チュートリアルを読むまでに、プロジェクト(./node_modulesにある)にローカルの依存関係として分度器とWebドライバーをインストールする方法を説明していませんでした。
これをグローバルにインストールするのではなく(おそらく、必要に応じてgrunt-protractor-runnerを使用して、連続ビルド方式でテストを実行するため)、このソリューションがうまくいきました:
npm install protractor --save-dev
./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" }
これがあなたをさらに助けることを願っています...
私はそのチュートリアルに従いましたが、同じ問題がありました。ここでの問題は、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/'
};
これでうまくいくように見えました。
うん、たくさんの答え...
Macでは、これは私のために働いた:
$ npm install chromedriver
$ ln -sf ~/angular-phonecat/node_modules/chromedriver/bin/chromedriver node_modules/protractor/Selenium/chromedriver.exe
それを修正するより良い方法になるGOTがありますが、少なくともこれで先に進みます。
しばらく見て回った後、package.json
ファイルに含まれる angular phonecat repo はupdate-webdriver
仕事。
そのタスクの実行(npm run update-webdriver
)分度器を修正しました。
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
アンギュラーのチュートリアルに従ったときに、同様の問題が発生しました。
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つの解決策があります。
ln -sf ~/dev/projects/angular-phonecat/node_modules/chromedriver/bin/chromedriver node_modules/protractor/Selenium/chromedriver.exe
ありがとう@bronson :-)
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"
},
私の場合、破損したchromedriver Zipファイルが原因でした。
この問題を解決するために次のことを行いました。
ChromeDriverダウンロードページ からchromedriver Zipをダウンロードしました
"node_modules\protractor\Selenium \"にあるZipファイルを抽出しました(つまり、この場所に "chromedriver.exe"をコピーしました)
その後、期待どおりに動作し始めました。これがお役に立てば幸いです。
Mac osxでは、分度器のpackage.jsonのバージョンを「*」に変更し、node_modulesを削除して、再度インストールします。
Windowsの場合、HTTP_PROXY
環境変数を設定する必要がある場合があります。プロキシサーバーがhttp://proxy.you.com:8080
であると仮定して、コマンドプロンプトでこれらの手順を試してください。
SETX HTTP_PROXY http://proxy.you.com:8080
(SUCCESSを返す必要があります:指定された値が保存されました。システムプロパティ...詳細...環境変数でこれを行うこともできます)webdriver-manager update
私にとってはnpm install
およびnpm run update-webdriver
コマンドは、破損したChromedriver_x.xx.Zip
ファイル。そこで、webdriver-manager update
、そしてそれは働いた。
スタンドアロンの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でプロキシを設定しなかったために部分的に発生しました。この解決策は 受け入れられた答え で見ることができます。
Windowsでは、Macで問題なく実行されたプロジェクトで問題が発生していました。最終的にそれを完了させたコマンドは次のとおりです。
node node_modules\protractor\bin\webdriver-manager update