我在工作中继承了一个没有文档的项目。这是一个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之外),我会
$ grunt e2e
org.openqa.grid.selenium.GridLauncher main
INFO: Launching a standalone server
18:38:46.189 WARN - Failed to start: SocketListener0@0.0.0.0: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。我在Windows 7的盒子上
答案 0 :(得分:7)
非常感谢您加入nightwatch.json文件。
我认为乔丹指的是问题的一部分。开箱即用,我无法让Nightwatch在Chrome上运行。我的.json文件在任何地方都有Firefox,你的Chrome说。我不得不下载Firefox,它没有实际设置Jordan提到的驱动程序。
我的下一个问题是服务器。
我将selenium对象start_process
设置为true;当您使用grunt运行测试时,nightwatch将自动启动服务器。您还需要将server_path
设置为some/directory/selenium-server-standalone-2.40.0.jar
。
无论这是否能解决您的直接问题,通过不必启动服务器然后运行测试,它可能会节省您将来的时间。
答案 1 :(得分:5)
"webdriver.chrome.driver" : "",
您需要在nightwatch.json文件的此行中指定Chrome驱动程序位置
例如,我使用:
"webdriver.chrome.driver" : "~/bin/chromedriver",
您是否也开始使用硒来使用镀铬驱动程序?如果不是在启动selenium时,请附加: -Dwebdriver.chrome.driver = /用户/ [用户名] / bin中/ chromedriver
所以当你启动selenium服务器时,它应该看起来像终端cmd: java -jar [SeleniumServerName] -Dwebdriver.chrome.driver = / Users / [username] / bin / chromedriver
请记住先将CD放入seleniumserver文件夹,然后根据Windows更改文件/文件夹路径结构。
答案 2 :(得分:2)
以防其他人同样挣扎。
过去几天我遇到过这个问题。问题出在我的案例中,chromedriver版本与chrome版本不兼容。我从nightwatch输出中无法分辨,但添加了一个日志输出告诉我。
我最初看到的是
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语句,打印出&#39;数据&#39;从这里开始阅读(从开始):
{
"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版本&gt; = 60。 更新chrome解决了我的问题。
亲切的问候, 假种皮
答案 3 :(得分:0)
我的问题来了,因为在我的/ etc / hosts文件中,我有127.0.0.1没有指向本地主机。我解决了,它解决了问题。
答案 4 :(得分:0)
我第一次运行硒服务器时遇到了同样的问题。
如果硒控制台也未启动会话,则可能是Web驱动程序未放置或未放置在PATH中。
如果您使用的是Chrome浏览器,请尝试从http://localhost:4444/wd/hub/下载chromedriver或运行npm install chromedriver
。
如果单独下载了驱动程序可执行文件,请不要忘记将其添加到PATH中。