会话[url]不可用,并且不在最后1000个终止的会话中。怎么解决这个?

时间:2014-06-27 07:55:10

标签: php session selenium selenium-webdriver behat

当我尝试启动时

  

php behat.phar

弹出WebDriver firefox窗口,然后我的功能测试在第一步失败并跳过其余部分。我明白了:

  

...

     

鉴于我在“first.php”#FeatureContext :: visit()

     

会话[url]不可用,并且不在最后1000个终止的会话中。

     

活跃会话是[分机key 51191ae0-8f6f-49d0-27b322967296]

     

...

如果我只使用测试通过。只有当我尝试使用硒时才会发生这种情况。

我正在使用MinkExtension GivenIAmOn()预制函数

my behat.yml:

default:
    paths:
        features: features
        bootstrap: features/bootstrap
    extensions:
        mink_extension.phar:
            mink_loader: 'mink.phar'
            base_url: 'http://10.0.0.10/'
            goutte: ~
            selenium2:
                wd_host: 'http://localhost:4444/wd/hub'
                capabilities:
                    version: ''

我的FeatureContext从MinkContext扩展而来。 我一直在寻找解决方案,我无法解决这个问题。

我正在使用带有firefox 26的Windows 7,selenium-server-standalone-2.42.2,我也试过了更低版本。正如我在一些问题中所读到的那样,会话/“session-id”/ url在某些版本之前被打破了,但现在它不应该。由于某种原因,它无法选择合适的会话。

对于数据质量感到抱歉,我的工作场所没有互联网连接,而且非常有限。这就是我使用.phar文件而不是使用composer的原因。我无法复制粘贴文件等等。如果我必须提供更多数据,请告诉我,我会。

3 个答案:

答案 0 :(得分:0)

这听起来像grid-level超时问题。您应该尝试增加browserTimeoutnewSessionWaitTimeout,看看是否有帮助。

来源:Session not available and is not among the last 1000 terminated sessions

  

网格中的超时通常应通过webDriver.manage().timeouts()来处理,这将控制不同操作的超时时间。

browserTimeout应为:

  • 高于套接字锁定超时(45秒)。
  • 通常高于webDriver.manage().timeouts()中使用的值,因为此机制是“最后一道防线”。

对于任何问题,请同时检查:http://localhost:4444/wd/hub/sessions

答案 1 :(得分:0)

我遇到了同样的问题,Selenium Grid的日志是这样的:

  

WARN [RequestHandler.process]-客户端已退出以进行会话扩展。键fa804448787370d0547cd517ab2badc1,终止   INFO [ActiveTestSessions.updateReason]-删除了尚未分配外部密钥的会话24f5656a-7a59-4edb-bf7b-c6a1ae59ca16,指示会话创建CLIENT_GONE

失败

错误CLIENT_GONE是:

  

“客户端进程(您的代码)似乎已经死亡或对我们的请求没有响应,间歇性网络问题也可能导致”。

我有一些正在排队等待的测试(5个测试正在等待,而其他5个正在运行)

我通过停止在网格上排队来解决此问题。

答案 2 :(得分:0)

我通过使用相同版本的selenium hub和节点解决了该问题: 图像:硒/集线器:3.11 和 图片:selenium / node-chrome:3.11