如何获得集线器状态,即确定其是否正在运行任何测试?

时间:2016-10-27 06:35:10

标签: selenium selenium-webdriver selenium-grid

我们有网格控制台来检查节点是否状态,是否正在运行任何测试。那么,如果有任何其他方式来获取集线器的状态,以确定它是否被使用?

获得此功能的实际原因是创建一个作业来清理/重新启动集线器和节点计算机。

PS:我做了一些搜索,但截至目前我无法解决问题。

2 个答案:

答案 0 :(得分:5)

您无需为此构建自定义servlet。

假设您的网格正在localhost上运行并且正在侦听端口4444,如果您调用URL http://localhost:4444/grid/api/hub(GET操作),您应该看到如下的JSON响应

{
   "success":true,
   "capabilityMatcher":"org.openqa.grid.internal.utils.DefaultCapabilityMatcher",
   "newSessionWaitTimeout":-1,
   "throwOnCapabilityNotPresent":true,
   "cleanUpCycle":5000,
   "custom":{

   },
   "host":"localhost",
   "maxSession":1,
   "servlets":[

   ],
   "browserTimeout":0,
   "debug":false,
   "jettyMaxThreads":-1,
   "port":4444,
   "role":"hub",
   "timeout":1800,
   "newSessionRequestCount":0,
   "slotCounts":{
      "free":0,
      "total":0
   }
}

在上面的JSON响应中,如果您解析freetotal的值,您应该能够获得所需的内容。例如,如果free的值等于total的值,则表示没有新会话在运行。

答案 1 :(得分:1)

查看此链接 - http://www.seleniumhq.org/docs/07_selenium_grid.jsp - 转到"在集线器和/或节点上添加自定义servlet"部分。

您可以运行扩展org.openqa.grid.web.servlet.RegistryBasedServlet的自定义servlet,它将为您提供信息。此servlet具有Registry对象getter方法getRegistry()

Registry对象有一个getActiveSessions()方法,它返回当前正在运行的测试集合。您可以根据您的要求检查尺寸等。

查看org.openqa.grid.web包中的selenium源代码,已经编写了许多servlet。