如何在Selenium Grid中为会话提供无限制的空闲时间,但是清理断开连接的会话?

时间:2015-10-30 13:01:03

标签: java selenium selenium-webdriver selenium-grid

我有一个使用以下配置的selenium网格:

{
  "port": 4444,
  "newSessionWaitTimeout": 2000
}

和使用此配置的2个节点:

{
  "capabilities": [{
    "browserName": "chrome",
    "platform": "LINUX",
    "maxInstances": 8
  }],
  "configuration": {
    "nodeTimeout": 120,
    "port": 5555,
    "hubPort": 4444,
    "hubHost": "hubhost",
    "nodePolling": 2000,
    "registerCycle": 10000,
    "register": true,
    "cleanUpCycle": 2000,
    "timeout": -1,
    "browserTimeout": -1,
    "maxSession": 8
  }
}

我编写了一段通过RemoteWebDriver-Class打开连接的Java代码。代码对驱动程序执行多次调用,然后暂停未知时间(30s - 1h)。我不想关闭会话,因为在此过程中,流程需要做出快速反应。

将超时设置为-1,一切正常。该过程将保持连接到会话(和浏览器)无限时间。不幸的是,当自动服务决定时,该过程被随机杀死。 节点识别出客户端关闭:

  

由于客户端超时而删除了硒

但会议没有清理过!无限超时使它们保持活跃状态​​,并且网格不会将它们释放以供进一步使用。

如何使用selenium配置解决此问题?

构建一个调用" driver.quit()"的process-shutdown-hook。免费会议,不是一个选择。

感谢您的帮助!

1 个答案:

答案 0 :(得分:0)

您是否注意到配置中的“ cleanUpCycle”:2000设置? 这意味着集线器将在2000毫秒内自行清理!