当前位置: 首页 > 知识库问答 >
问题:

如何增加Selenium网格会话超时?

慕容文昌
2023-03-14

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

我看到了,在那段时间里,Selenium会话被删除了。

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

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

信息org.openqa.selenium.remote.server。DriverServlet-由于客户端超时,会话7f5fffec-4882-4c4c-b091-c780c66d379d已删除

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

org.openqa.selenium.remote.SessionNotFoundException

我试图增加所有可能的超时。这是我如何启动hub:

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

我用的是硒2.45

共有2个答案

林彬
2023-03-14
C#

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

P、 我使用的是Selenium grid 2.53和firefox 46.0

汪迪
2023-03-14

我终于明白了!

解决方案其实很简单:在集线器上配置更改后,需要重新启动节点。

这并不明显:

当我在集线器上更改配置时,我重新启动了它。节点将自动向中心重新注册。然后看看控制台,我可以看到新的配置参数正在生效。更重要的是,当我查看节点配置时,我看到相同的参数在节点上发生了更改。这是误导!因为即使节点重新注册,但其配置尚未更改。它只会在节点重新启动时更改。我认为,这是Selenium错误-节点应该在重新注册期间重新配置。

 类似资料:
  • 从C#客户机,我的驱动变量在2秒后返回“Selenium Grid会话终止,因为SO#U超时”。我正在寻找一种方法来增加SE Grid server的超时时间,因为看起来我需要增加Selenium节点的超时时间。 感谢您帮助解决此问题。

  • Node2:Win10系统 开始于:java-dwebdriver.chrome.driver=chromedriver.exe-jar selenium-server-standalone-2.52.0.jar-role webdriver-hub http://192.168.1.103:4444/grid/register-nodeConfig node2.json json的内容如下: n

  • 我在我的电脑上使用Selenium stanalone+Chrome headless+PHP+UwAmp服务器来解析一些数据(系统:WIN7_32bit,4GB RAM)。 我需要同时启动22个Chrome会话,所以我使用selenium grid进行以下设置: 我的问题是,主要是6个会议开始(图片上的例子)...有时有2或4个活动会话。我做错了什么?我试图在php.ini中进行更改,但没有成功

  • 我有JMS队列消息处理器序列,其中请求被发送到SOAPendpoint。但是,对此endpoint的请求可能需要很长时间,最多30分钟左右。如何配置ESB以允许长超时值?目前,我在60秒后得到以下错误: 谢谢你的帮助 编辑:我在repository/conf/passthru-http.properties中添加了http.socket.timeout=1800000-property,这似乎解决

  • 在 HTTP 协议中,当客户端不再处于活动状态时没有显示的终止信号。这意味着当客户端不再处于活跃状态时可以使用的唯一机制是超时时间。 Servlet 容器定义了默认的会话超时时间,且可以通过 HttpSession 接口的 getMaxInactiveInterval 方法获取。开发人员可以使用HttpSession 接口的 setMaxInactiveInterval 方法改变超时时间。这些方法