【问题标题】:How to increase Selenium grid session timeout?如何增加 Selenium 网格会话超时?
【发布时间】:2015-05-30 03:36:03
【问题描述】:

在运行我的测试时,我需要有很长的延迟(约 40 秒)。

我知道,Selenium 会话在那段时间被删除了。

请帮助:如何配置会话超时以增加?

在 Selenium 节点日志中开始延迟后,我在 30 秒内看到的内容:

INFO org.openqa.selenium.remote.server.DriverServlet - 会话 7f5ffec-4882-4c4c-b091-c780c66d379d 因客户端超时而被删除

睡眠 40 秒后,我的代码中出现了这个异常:

org.openqa.selenium.remote.SessionNotFoundException

我尝试增加所有可能的超时时间。 以下是我启动集线器的方式:

java -jar selenium-server-standalone.jar -role hub 
-hubConfig selenium_hub.json 
-nodeTimeout 61 
-remoteControlPollingIntervalInSeconds 180 
-sessionMaxIdleTimeInSeconds 240 
-newSessionMaxWaitTimeInSeconds 250 
-timeout 59

这里是 selenium_hub.json:

{
  "host": null,
  "port": 4444,
  "newSessionWaitTimeout": -1,
  "servlets": [],
  "prioritizer":  null,
  "capabilityMatcher": "org.openqa.grid.internal.utils.DefaultCapabilityMatcher",
  "throwOnCapabilityNotPresent": true,
  "nodePolling": 5000,
  "cleanUpCycle": 5000,
  "timeout": 60000,
  "browserTimeout": 60000,
  "maxSession": 5,
  "jettyMaxThreads": -1
}

节点上没有配置任何超时。 这是我在 Grid 控制台中看到的内容:

browserTimeout : 60000
capabilityMatcher : org.openqa.grid.internal.utils.DefaultCapabilityMatcher
cleanUpCycle : 5000
host : null
hubConfig : /usr/local/selenium/config/selenium_hub.json
jettyMaxThreads : -1
maxSession : 5
newSessionMaxWaitTimeInSeconds : 250
newSessionWaitTimeout : -1
nodePolling : 5000
nodeTimeout : 61
port : 4444
prioritizer : null
remoteControlPollingIntervalInSeconds : 180
role : hub
servlets : []
sessionMaxIdleTimeInSeconds : 240
throwOnCapabilityNotPresent : true
timeout : 59000

我正在使用 Selenium 2.45

【问题讨论】:

标签: selenium selenium-webdriver session-timeout selenium-grid


【解决方案1】:

我终于明白了!

解决方案其实很简单:在hub上更改配置后需要重启节点。

这不是很明显:

当我更改集线器上的配置后,我重新启动了它。节点会自动重新注册到集线器。然后查看控制台,可以看到新的配置参数生效了。更重要的是,当我查看节点配置时,我看到节点上的相同参数发生了变化。这是误导!因为即使节点重新注册,但它们的配置并没有改变。它也只会在节点重新启动时发生变化。我认为,这是 Selenium 错误 - 节点应在重新注册期间重新配置。

【讨论】:

  • @Slavik,我以前每天都会重启我的节点,即使 Hub 没有任何变化。即便如此,由于客户端超时,我将其删除。如何继续。
  • 我建议您在单独的线程中提出该问题。我可以考虑增加超时。另一种解决方案是发送 KeepAlive 事件。
【解决方案2】:
C#

driver = new RemoteWebDriver(new Uri("http://host:4444/wd/hub"), capabilities);
driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds( desired_time ));

附: 我正在使用 Selenium grid 2.53 和 firefox 46.0

【讨论】:

  • 您的回答涉及驱动程序超时之一,而不是 Selenium Grid 超时。
猜你喜欢
  • 2019-09-27
  • 2012-01-29
  • 2018-06-05
  • 1970-01-01
  • 2011-01-22
  • 2014-03-26
  • 1970-01-01
  • 2017-09-17
  • 1970-01-01
相关资源
最近更新 更多