【问题标题】:How to keep a session alive in selenium with phantomjs through nodejs with webdriver.io?如何通过带有 webdriver.io 的 nodejs 使用 phantomjs 在 selenium 中保持会话活动?
【发布时间】:2015-04-06 15:02:46
【问题描述】:

我通过 webdriver.io 在 node.js 环境中使用 selenium + phantomjs。 由于某种原因,会话会在一段时间后结束。 Selenium 仍在运行,但在其资源中心,没有更多的活动会话。 我怎样才能防止这种情况发生?

【问题讨论】:

  • 如何启动 selenium?硒日志说什么?会话是否以另一个浏览器结束,比如 chome?
  • Selenium 在 nodejs 中生成。我在哪里可以找到该日志?

标签: node.js selenium-webdriver phantomjs webdriver-io


【解决方案1】:

默认情况下,Selenium Hub 会超时所有非活动会话,以便为其他请求释放资源。您可以通过在启动 Hub 时设置 timeout=0 来禁用此功能,可以作为命令行参数或通过 JSON 配置,具体取决于您的启动方式。

请记住,如果客户端在禁用超时的情况下崩溃,则该实例将继续使用,并且无法用于新会话。

来源:https://code.google.com/p/selenium/wiki/Grid2#Optional_parameters

【讨论】:

    【解决方案2】:

    如果您不想将全局超时时间延长至无穷大, 您需要在会话超时之前执行命令。

    const driverTimeout = 60*1000;
    
    // this interval should run before session expired and keep it alive.
    const handleNumber = setInterval(() -> driver.getOrientation(), driverTimeout - 1000);
    
    /** do some long async logic **/
    
    // then stop the interval
    clearInterval(handleNumber);
    

    查看更多信息
    https://l18.me/how-to-keep-alive-appium-driver-da9227b2fa

    【讨论】:

      猜你喜欢
      • 2021-02-05
      • 1970-01-01
      • 2016-04-20
      • 2015-05-26
      • 1970-01-01
      • 2011-06-25
      • 2012-04-10
      • 1970-01-01
      • 2014-11-26
      相关资源
      最近更新 更多