【问题标题】:Is there a way too prevent selenium automatically terminating idle sessions?有没有办法防止硒自动终止空闲会话?
【发布时间】:2019-08-21 15:54:24
【问题描述】:

我正在使用 selenium 来自动化与网站的一些交互。此过程涉及打开多个浏览器并让它们间歇性地执行操作。但是,偶尔会出现长时间(> 1 小时)不作为,并且 selenium 似乎会在大约 30 分钟未被调用后自动终止浏览器会话。

我想将此超时设置为 7 小时左右,但我找不到任何方法。

这是 selenium 在关闭空闲浏览器时发送的消息。

13:06:35.277 INFO [ActiveSessions$1.onStop] - Removing session 70a1b8cbae6876cde7e66df13b3942d1 (org.openqa.selenium.chrome.ChromeDriverService)

如果有人有任何线索,我将非常感激。目前我只是每 15 分钟自动刷新一次浏览器以防止超时,但感觉很糟糕。

【问题讨论】:

  • 超时为 7 小时的用例是什么?
  • 嘿@demouser123,浏览器必须准备好响应来自系统另一部分的通知,有时通知不会发生一段时间。您知道如何修改超时时间还是只是好奇?
  • 为什么不创建一个脚本来打开浏览器,检查要执行的操作,然后关闭。然后无限期地每 15 分钟(或其他)启动该脚本。这样您就不必长时间打开浏览器并反复刷新页面。
  • 浏览器必须非常迅速地对通知采取行动,一旦有通知就启动浏览器会很遗憾地花费太多时间才能实现。我真的只是在寻找一种方法来增加硒的超时时间,尽管为这个建议欢呼。

标签: selenium selenium-webdriver webdriver selenium-grid selenium-remotedriver


【解决方案1】:

此错误消息...

INFO [ActiveSessions$1.onStop] - Removing session 70a1b8cbae6876cde7e66df13b3942d1 (org.openqa.selenium.chrome.ChromeDriverService)

...表示已经启动/产生的新 Chrome 浏览器会话已终止。

Selenium Grid Hub/Node 配置和/或 RemoteWebdriver 实施中观察到此问题。

如果您观察到selenium-server-standalone-x.y.z.jar-help默认 -timeout / -sessionTimeout 设置为 1800 秒。

  • CLI 命令:

    $>java -jar selenium-server-standalone-3.14.0.jar -help
    
  • 输出:

-timeout, -sessionTimeout: <Integer> in seconds :指定服务器自动终止在过去 X 秒内没有任何活动的会话之前的超时时间。然后将释放测试槽以供另一个测试使用。这通常用于处理客户端崩溃。对于网格中心/节点角色,还必须设置 cleanUpCycle。

  • 默认值:1800

  • 快照:

因此,您会看到超时,并且 selenium 会在大约 30 分钟未被调用后自动终止浏览器会话


解决方案

您可以按如下方式增加-timeout / -sessionTimeout

$>java -jar /path/to/selenium-server-standalone-3.14.0.jar -sessionTimeout 57868143

【讨论】:

  • DebianJanB 你这个美丽的男人,非常感谢你,这解决了我的问题。
  • 我遇到了同样的问题,我在 docker 上运行我的应用程序有没有办法通过 docker-compose 设置 sessionTimeout?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2019-02-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2020-10-10
  • 2011-05-04
  • 1970-01-01
相关资源
最近更新 更多