http://localhost:4444/grid/console
正确显示1个请求应该等待插槽空闲,以便在当前测试结束后继续测试:
<小时/>
300秒后测试会话超时。
最多支持 1 并发测试
1请求等待广告位免费。
查看配置
但是中心而不是返回它应该保留的某种json通知并等待它什么都不返回,客户端连接可能只是超时(取决于你正在使用的http客户端库)。
我正在使用ruby绑定但我可以使用普通卷曲重现错误,请按照以下步骤操作:
My Hub设置(在ubuntu服务器上)
java -jar selenium-server-standalone.jar -role hub
我的节点设置(在Windows XP机器上):
java -jar selenium-server-standalone.jar -role webdriver -hub $HUBURL -port 5522 -maxSession 1 -browser "maxInstances=1,browserName=firefox"
注意maxSession和maxInstances有意放在1以轻松重现该问题。
(为了举例)
curl -L --max-redirs 20 -v -i -H "Accept: application/json" -X POST http://localhost:4444/wd/hub/session -d '{"desiredCapabilities":{"javascriptEnabled":false,"version":"","rotatable":false,"takesScreenshot":true,"cssSelectorsEnabled":true,"browserName":"firefox","nativeEvents":false,"platform":"ANY"}}'
连接处于保持状态,没有服务器消息指示正在发生的事情,json消息告诉您正在等待插槽空闲时应该这样做。 在一些http库中,这将暂时超时,因为它目前在ruby上 gem'selenium-webdriver'&lt; = 2.6.0
所以我需要一种方法来查询是否有空闲的插槽(对于特定的所需能力)以避免客户端超时错误。
我检查了JsonWireProtocol,但找不到请求该信息的路径。 JsonWireProtocol
答案 0 :(得分:5)
显然ruby客户端不能等待,并且会在低级别超时。
幸运的是,你可以让Grid2在一段时间后抛出RuntimeException:
Changing Maximum Wait Time for New Session
启动网格中心时,您可以以毫秒为单位传递该参数: -newSessionWaitTimeout 25000
java -jar selenium-server-standalone.jar -role hub -newSessionWaitTimeout 25000
使用你提供的卷曲参数,你会看到现在,25秒后你会得到:
{
"status":13,
"value":{
"message":"java.lang.RuntimeException: Request timed out waiting
for a node to become available."...
}
你可以在红宝石方面工作和处理。