Nightwatch:从 selenium 服务器检索新会话时出错
Nightwatch : Error retrieving a new session from the selenium server
我有一个简单的测试,可以在 chrome 中打开 launch_url。但是我收到错误消息,因为无法检索任何新会话。
我还想知道如何在没有 运行ning 的情况下在网格中使用 nightwatch。只是一个独立的实例。
下面是我用过的配置
{
"src_folders" : ["tests"],
"output_folder" : "reports",
"custom_commands_path" : "",
"custom_assertions_path" : "",
"page_objects_path" : "",
"globals_path" : "",
"selenium" : {
"start_process" : false,
"server_path" : "./bin/selenium-server-standalone-3.4.0.jar",
"log_path" : "",
"port" : 4444,
"cli_args" : {
"webdriver.chrome.driver" : "./bin/chromedriver.exe",
"webdriver.gecko.driver" : "",
"webdriver.edge.driver" : ""
}
},
"test_settings" : {
"default" : {
"launch_url" : "http://127.0.0.1",
"selenium_port" : 4444,
"selenium_host" : "127.0.0.1",
"silent": true,
"screenshots" : {
"enabled" : false,
"path" : ""
},
"desiredCapabilities": {
"browserName": "firefox",
"marionette": true
}
},
"chrome" : {
"desiredCapabilities": {
"browserName": "chrome",
"javascriptEnabled": true,
"acceptSslCerts": true
}
},
"edge" : {
"desiredCapabilities": {
"browserName": "MicrosoftEdge"
}
}
}
}
当我 运行 nightwatch 使用命令 nightwatch --env chrome 或只是 nightwatch 时,它给我以下错误
[Test1] Test Suite
======================
Running: Demo test
http://127.0.0.1
Error retrieving a new session from the selenium server
Connection refused! Is selenium server started?
{ status: 13,
value:
{ message: 'Error forwarding the new session Empty pool of VM for setup Capabilities [{acceptSslCerts=true, marionette=true, name=Test1, browserName=chrome, javascriptEnabled=true, platform=ANY}]',
class: 'org.openqa.grid.common.exception.GridException' } }
我的测试看起来像
module.exports = {
'Demo test' : function (browser) {
console.log(browser.launchUrl);
browser
.url(browser.launchUrl)
.end();
}
};
我可以看到启动 url 已登录到控制台,但浏览器未启动。我正在使用最新的 jar 文件和 chrome 驱动程序二进制文件。
我刚刚试了一下,这就是我的发现
在您的 selenium
配置部分,我看到您已将 start_process
设置为 false
。
"selenium" : {
"start_process" : false,
"server_path" : "./bin/selenium-server-standalone-3.4.0.jar",
"log_path" : "",
"port" : 4444,
"cli_args" : {
"webdriver.chrome.driver" : "./bin/chromedriver.exe",
"webdriver.gecko.driver" : "",
"webdriver.edge.driver" : ""
}
},
当您的值为 false
时,您基本上可以摆脱这部分本身(因为根据您的配置根本不会使用它)
你实际上是在告诉 nightwatch 它不应该尝试自己启动一个 selenium-server,而应该只连接到端口 4444
上的 selenium 服务器 运行(这些值是获得的来自 default
部分 test_settings
部分
"default" : {
"launch_url" : "http://www.google.com",
"selenium_port" : 4444,
"selenium_host" : "127.0.0.1",
"silent": false,
"screenshots" : {
"enabled" : false,
"path" : ""
},
"desiredCapabilities": {
"browserName": "firefox",
"marionette": true
}
},
到目前为止我们都很好。所以在你 运行 nightwatch
命令之前我猜你启动了 selenium 服务器但是模式不正确。
我认为您使用以下命令启动了服务器
java -jar selenium-server-standalone-3.4.0.jar -role hub
这会导致 Hub
启动。集线器就像 manager
。它不能自己完成工作(启动浏览器、打开 URL、键入文本、单击链接等)。它需要 node
可用,以便它可以将其所有工作路由到节点。
错误 Error forwarding the new session Empty pool of VM for setup Capabilities [{acceptSslCerts=true, marionette=true, name=Nightwatchtest, browserName=firefox, javascriptEnabled=true, platform=ANY}]'
本质上是 Selenium Grid 告诉您的方式,您没有连接任何节点以将流量路由到。
因此,为了解决您的问题,您可以执行以下操作之一:
- 使用命令
java -jar selenium-server-standalone-3.4.0.jar
(或) 以独立模式启动selenium服务器[既不作为集线器也不作为节点]
- 将配置文件中的标志
start_process
翻转为 true
,这将导致 nightwatch 自行启动和停止服务器。
我有一个简单的测试,可以在 chrome 中打开 launch_url。但是我收到错误消息,因为无法检索任何新会话。
我还想知道如何在没有 运行ning 的情况下在网格中使用 nightwatch。只是一个独立的实例。
下面是我用过的配置
{
"src_folders" : ["tests"],
"output_folder" : "reports",
"custom_commands_path" : "",
"custom_assertions_path" : "",
"page_objects_path" : "",
"globals_path" : "",
"selenium" : {
"start_process" : false,
"server_path" : "./bin/selenium-server-standalone-3.4.0.jar",
"log_path" : "",
"port" : 4444,
"cli_args" : {
"webdriver.chrome.driver" : "./bin/chromedriver.exe",
"webdriver.gecko.driver" : "",
"webdriver.edge.driver" : ""
}
},
"test_settings" : {
"default" : {
"launch_url" : "http://127.0.0.1",
"selenium_port" : 4444,
"selenium_host" : "127.0.0.1",
"silent": true,
"screenshots" : {
"enabled" : false,
"path" : ""
},
"desiredCapabilities": {
"browserName": "firefox",
"marionette": true
}
},
"chrome" : {
"desiredCapabilities": {
"browserName": "chrome",
"javascriptEnabled": true,
"acceptSslCerts": true
}
},
"edge" : {
"desiredCapabilities": {
"browserName": "MicrosoftEdge"
}
}
}
}
当我 运行 nightwatch 使用命令 nightwatch --env chrome 或只是 nightwatch 时,它给我以下错误
[Test1] Test Suite
======================
Running: Demo test
http://127.0.0.1
Error retrieving a new session from the selenium server
Connection refused! Is selenium server started?
{ status: 13,
value:
{ message: 'Error forwarding the new session Empty pool of VM for setup Capabilities [{acceptSslCerts=true, marionette=true, name=Test1, browserName=chrome, javascriptEnabled=true, platform=ANY}]',
class: 'org.openqa.grid.common.exception.GridException' } }
我的测试看起来像
module.exports = {
'Demo test' : function (browser) {
console.log(browser.launchUrl);
browser
.url(browser.launchUrl)
.end();
}
};
我可以看到启动 url 已登录到控制台,但浏览器未启动。我正在使用最新的 jar 文件和 chrome 驱动程序二进制文件。
我刚刚试了一下,这就是我的发现
在您的 selenium
配置部分,我看到您已将 start_process
设置为 false
。
"selenium" : {
"start_process" : false,
"server_path" : "./bin/selenium-server-standalone-3.4.0.jar",
"log_path" : "",
"port" : 4444,
"cli_args" : {
"webdriver.chrome.driver" : "./bin/chromedriver.exe",
"webdriver.gecko.driver" : "",
"webdriver.edge.driver" : ""
}
},
当您的值为 false
时,您基本上可以摆脱这部分本身(因为根据您的配置根本不会使用它)
你实际上是在告诉 nightwatch 它不应该尝试自己启动一个 selenium-server,而应该只连接到端口 4444
上的 selenium 服务器 运行(这些值是获得的来自 default
部分 test_settings
部分
"default" : {
"launch_url" : "http://www.google.com",
"selenium_port" : 4444,
"selenium_host" : "127.0.0.1",
"silent": false,
"screenshots" : {
"enabled" : false,
"path" : ""
},
"desiredCapabilities": {
"browserName": "firefox",
"marionette": true
}
},
到目前为止我们都很好。所以在你 运行 nightwatch
命令之前我猜你启动了 selenium 服务器但是模式不正确。
我认为您使用以下命令启动了服务器
java -jar selenium-server-standalone-3.4.0.jar -role hub
这会导致 Hub
启动。集线器就像 manager
。它不能自己完成工作(启动浏览器、打开 URL、键入文本、单击链接等)。它需要 node
可用,以便它可以将其所有工作路由到节点。
错误 Error forwarding the new session Empty pool of VM for setup Capabilities [{acceptSslCerts=true, marionette=true, name=Nightwatchtest, browserName=firefox, javascriptEnabled=true, platform=ANY}]'
本质上是 Selenium Grid 告诉您的方式,您没有连接任何节点以将流量路由到。
因此,为了解决您的问题,您可以执行以下操作之一:
- 使用命令
java -jar selenium-server-standalone-3.4.0.jar
(或) 以独立模式启动selenium服务器[既不作为集线器也不作为节点]
- 将配置文件中的标志
start_process
翻转为true
,这将导致 nightwatch 自行启动和停止服务器。