ドキュメントのない作業中のプロジェクトを継承しました。これはsails.jsアプリケーションです。ユニットテストとエンドツーエンドテストの小さなセットがあります。
Gruntを使用してエンドツーエンドのテストを実行しようとすると。私は得る:
$ grunt e2e
Running "nightwatch" task
started - PID: 5440
>> Executing "default" tests (standalone)
[Index] Test Suite
==================
Running: Should clean the collection
removing 0 places
>> Connection refused! Is Selenium server started?
何が欠けているのかわかりません。これは私が一週間以上立ち往生している。
プロジェクトのgrunt-nightwatchにSelenium-server-standalone-2.40.0.jarがあります。したがって、PIDはSeleniumです。サーバーが起動しています。最初にjarを起動すると(うなり声の外で)取得します
$ grunt e2e
org.openqa.grid.Selenium.GridLauncher main
INFO: Launching a standalone server
18:38:46.189 WARN - Failed to start: [email protected]:4444
Exception in thread "main" Java.net.BindException: Selenium is already running on port 4444. Or some other service is.
at org.openqa.Selenium.server.SeleniumServer.start(SeleniumServer.Java:491)
at org.openqa.Selenium.server.SeleniumServer.boot(SeleniumServer.Java:300)
at org.openqa.Selenium.server.SeleniumServer.main(SeleniumServer.Java:245)
at org.openqa.grid.Selenium.GridLauncher.main(GridLauncher.Java:95)
>> Could not start Selenium.
これがnightwatch.json
{
"src_folders" : ["tests/e2e"],
"custom_commands_path" : "",
"custom_assertions_path" : "",
"globals_path" : "",
"Selenium" : {
"start_process" : false,
"server_path" : "",
"log_path" : "",
"Host" : "127.0.0.1",
"port" : 4444,
"cli_args" : {
"webdriver.chrome.driver" : "",
"webdriver.ie.driver" : ""
}
},
"test_settings" : {
"default" : {
"launch_url" : "http://localhost",
"Selenium_port" : 4444,
"Selenium_Host" : "localhost",
"silent": true,
"screenshots" : {
"enabled" : false,
"path" : ""
},
"desiredCapabilities": {
"browserName": "chrome",
"javascriptEnabled": true,
"acceptSslCerts": true
}
},
"chrome" : {
"desiredCapabilities": {
"browserName": "chrome",
"javascriptEnabled": true,
"acceptSslCerts": true
}
}
}
}
助けてくれてありがとう!
p.s. Windows7ボックスにいます
Nightwatch.jsonファイルを含めていただきありがとうございます。
ジョーダンは問題の一部を指摘していると思います。箱から出してすぐに、ChromeでNightwatchを実行することができませんでした。私の.jsonファイルにはChromeと書かれているところすべてにFirefoxがありました。 Firefoxをダウンロードする必要がありましたが、Jordanが言及したドライバーを実際に設定しなくても機能しました。
私の次の問題はサーバーでした。
Seleniumオブジェクトを設定しましたstart_process
をtrueに設定します。 gruntを使用してテストを実行すると、nightwatchは自動的にサーバーを起動します。また、server_path
をsome/directory/Selenium-server-standalone-2.40.0.jar
に設定する必要があります。
これで当面の問題が解決するかどうかに関係なく、サーバーを起動する必要がないため、将来的に時間を節約できる可能性がありますその後テストを実行します。
"webdriver.chrome.driver" : "",
Nightwatch.jsonファイルのこの行内でchrome driverの場所を指定する必要があります
たとえば、私は使用します:
"webdriver.chrome.driver" : "~/bin/chromedriver",
また、Seleniumを起動してchromeドライバーを使用しますか?Seleniumを起動するときにそうでない場合は、次を追加します:-Dwebdriver.chrome.driver =/Users/[username]/bin/chromedriver
したがって、Seleniumサーバーを起動すると、ターミナルcmdのようになります。Java -jar [SeleniumServerName] -Dwebdriver.chrome.driver =/Users/[username]/bin/chromedriver
最初にseleniumserverフォルダーにCDを挿入し、Windowsに基づいてファイル/フォルダーのパス構造を変更することを忘れないでください。
他の誰かが同じように苦労している場合に備えて。
この数日間、この問題が発生しました。問題は私の場合、chromedriverバージョンがchromeバージョンと互換性がなかったということでした。ナイトウォッチの出力からはわかりませんでしたが、ログ出力を追加して教えてくれました。
最初に見たもの
Starting Selenium server... started - PID: 12835
...
{ Error: Unhandled "error" event. ([object Object])
at ClientManager.emit (events.js:185:19)
at Nightwatch.<anonymous> (/home/n23430/dev/Ps.Web/WebTest/ps-web-test/node_modules/nightwatch/lib/runner/clientmanager.js:67:10)
at Object.onceWrapper (events.js:316:30)
at emitOne (events.js:115:13)
at Nightwatch.emit (events.js:210:7)
at HttpRequest.<anonymous> (/home/n23430/dev/Ps.Web/WebTest/ps-web-test/node_modules/nightwatch/lib/index.js:501:10)
at emitThree (events.js:135:13)
at HttpRequest.emit (events.js:216:7)
at IncomingMessage.<anonymous> (/home/n23430/dev/Ps.Web/WebTest/ps-web-test/node_modules/nightwatch/lib/http/request.js:168:16)
at emitNone (events.js:110:20)
at IncomingMessage.emit (events.js:207:7)
at endReadableNT (_stream_readable.js:1047:12)
at _combinedTickCallback (internal/process/next_tick.js:102:11)
at process._tickCallback (internal/process/next_tick.js:161:9)
context:
{ message: 'Connection refused! Is Selenium server started?\n',
data: { value: [Object], status: 33 } } }
問題をどのように見つけたか上記のトレースバックには、/ node_modules/nightwatch/lib /index.jsの行501への参照があります。そこにconsole.logステートメントを追加し、ここから「データ」を出力して、これを(最初から)読み取ります。
{
"value": {
"stacktrace": "org.openqa.Selenium.SessionNotCreatedException: session not created exception: Chrome version must be >= 60.0.3112.0\n (Driver info: chromedriver=2.33.506092 (733a02544d189eeb751fe0d7ddca79a0ee28cce4),platform=Linux 4.4.0-79-generic x86_64) (WARNING: The server did not provide any stacktrace information)...
結論 chromedriverバージョン2.33にはchromeバージョン> = 60が必要です。更新chrome私の問題は解決しました。
よろしく、仮種皮
/ etc/hostsファイルで127.0.0.1がローカルホストを指していないため、問題が発生しました。私はそれを修正し、それは問題を解決しました。
Seleniumサーバーを初めて実行しているときに同じ問題が発生しました。
Seleniumコンソール http:// localhost:4444/wd/hub / もセッションを開始していない場合は、WebドライバーがPATHに配置されていないか、配置されていない可能性があります。 chromeブラウザを使用している場合は、 https://chromedriver.storage.googleapis.com/ からchromedriverをダウンロードするか、npm install chromedriver
を実行してみてください。
ドライバ実行可能ファイルを個別にダウンロードした場合は、PATHに追加することを忘れないでください。