我怎样才能给 Selenium Grid 中的会话无限的空闲时间,但清理断开连接的会话?
Posted
技术标签:
【中文标题】我怎样才能给 Selenium Grid 中的会话无限的空闲时间,但清理断开连接的会话?【英文标题】:How can I give sessions in a Selenium Grid an unlimited idle time, but clean up disconnected ones? 【发布时间】:2016-01-30 22:00:00 【问题描述】:我有一个使用以下配置的 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
我编写了一段 Java 代码,它通过 RemoteWebDriver-Class 打开一个连接。该代码对驱动程序进行了几次调用,然后暂停了未知时间(30 秒 - 1 小时)。我不想关闭会话,因为在唤醒时,进程需要非常快速地做出反应。
超时设置为 -1 一切正常。该进程将无限期地与会话(和浏览器)保持连接。不幸的是,当自动服务决定时,该进程被随机终止。 节点识别到客户端关闭:
由于客户端超时而删除了硒
但是会话没有清理干净!无限超时使它们保持活动状态,并且网格不会释放它们以供进一步使用。
如何使用 selenium 配置解决这个问题?
构建一个调用“driver.quit()”来释放会话的 process-shutdown-hook 不是一种选择。
感谢您的帮助!
【问题讨论】:
【参考方案1】:您注意到配置中的 "cleanUpCycle": 2000 设置了吗? 这意味着 Hub 将在 2000 毫秒内自行清理!
【讨论】:
以上是关于我怎样才能给 Selenium Grid 中的会话无限的空闲时间,但清理断开连接的会话?的主要内容,如果未能解决你的问题,请参考以下文章
多线程 Selenium WebDriver 与 Selenium Grid