在进行测试时,我需要长时间延迟(约40秒)。
我看到,Selenium会话在此期间被删除了。
请帮助:如何配置会话超时以增加?
这里是我在Selenium节点日志中开始延迟后30秒内看到的:
INFO org.openqa.selenium.remote.server.DriverServlet - 会话 7f5fffec-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
}
节点上没有配置任何超时。 这是我在网格控制台中看到的内容:
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
答案 0 :(得分:7)
我终于明白了!
解决方案实际上非常简单:在集线器上更改配置后,需要重新启动节点。
这不是很明显:
当我更改集线器上的配置时,我重新启动它。节点将自动重新注册集线器。然后查看控制台,我可以看到新的配置参数生效。更重要的是,当我查看节点配置时,我看到节点上的参数已经更改。那是误导!因为即使节点重新注册,但其配置尚未更改。它仅在节点重新启动时才会更改。我想,这是Selenium bug - 节点应该在重新注册时重新配置。
答案 1 :(得分:0)
C#
driver = new RemoteWebDriver(new Uri("http://host:4444/wd/hub"), capabilities);
driver.Manage().Timeouts().ImplicitlyWait(TimeSpan.FromSeconds( desired_time ));
P.S。 我正在使用Selenium grid 2.53和firefox 46.0