有没有办法防止 selenium 自动终止空闲会话?

Is there a way too prevent selenium automatically terminating idle sessions?

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

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

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

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

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

这个错误信息...

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

...意味着已经 initiated/spawned 一个新的 Chrome 浏览器会话 已终止。

使用 Selenium Grid Hub/Node 配置 and/or 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 : Specifies the timeout before the server automatically kills a session that hasn't had any activity in the last X seconds. The test slot will then be released for another test to use. This is typically used to take care of client crashes. For grid hub/node roles, cleanUpCycle must also be set.

  • 默认值:1800

  • 快照:

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


解决方案

您可以增加 -timeout / -sessionTimeout 如下:

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