Leo*_*cci 3 webdriver selenium-grid selenium-webdriver
正确显示1个请求应等待插槽空闲,以便测试可在当前测试完成后继续:
测试会话在300秒后超时.
最多支持1个并发测试
1个请求等待插槽免费.
查看配置
但是中心而不是返回它应该保留的某种json通知并等待它什么都不返回,客户端连接可能只是超时(取决于你正在使用的http客户端库).
我正在使用ruby绑定,但我可以使用普通卷曲重现错误,请按照以下步骤操作:
我的Hub设置(在ubuntu服务器上)
java -jar selenium-server-standalone.jar -role hub
Run Code Online (Sandbox Code Playgroud)
我的节点设置(在Windows XP机器上):
java -jar selenium-server-standalone.jar -role webdriver -hub $HUBURL -port 5522 -maxSession 1 -browser "maxInstances=1,browserName=firefox"
Run Code Online (Sandbox Code Playgroud)
注意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"}}'
Run Code Online (Sandbox Code Playgroud)
连接处于保持状态,没有服务器消息指示正在发生的事情,json消息告诉您正在等待插槽是免费的应该这样做.在一些http库中,这将简单地超时,因为它目前在ruby gem'selenium-webdriver'<= 2.6.0上
所以我需要一种方法来查询是否有空闲的插槽(对于特定的所需能力),以避免客户端超时错误.
我检查了JsonWireProtocol,但找不到请求该信息的路径. JsonWireProtocol
小智 5
显然ruby客户端不能等待,并将在低级别超时.
幸运的是,你可以让Grid2在一段时间后抛出RuntimeException:
启动网格集线器时,可以以ms为单位传递该参数:-newSessionWaitTimeout 25000
java -jar selenium-server-standalone.jar -role hub -newSessionWaitTimeout 25000
Run Code Online (Sandbox Code Playgroud)
使用你提供的curl params,你会看到现在,25秒后你会得到:
{
"status":13,
"value":{
"message":"java.lang.RuntimeException: Request timed out waiting
for a node to become available."...
}
Run Code Online (Sandbox Code Playgroud)
这是你可以在红宝石方面工作和处理的东西.
| 归档时间: |
|
| 查看次数: |
9494 次 |
| 最近记录: |