【问题标题】:Parallel-test Cucumber watir testing with phantomjs ECONREFUSED使用 phantomjs 进行并行测试 Cucumber watir 测试 ECONREFUSED
【发布时间】:2015-07-31 15:20:01
【问题描述】:

我在并行测试中遇到了 phantomjs 的问题,firefox 运行良好。我使用 parallel_tests、watir-webdriver 和 Cucumber。

No connection could be made because the target machine actively refused it. - connect(2) for "127.0.0.1" port 8910 (Errno::ECONNREFUSED)

测试通过以下方式运行:

parallel_cucumber features/parallel_tests -n 3

经过一些调试,我发现当第一个进程完成测试时会出现问题,它会以某种方式杀死所有 phantomjs 浏览器实例。

这是 env.rb 设置:

browser = Watir::Browser.new :phantomjs, args: %w(--ignore-ssl-errors=true)

Before do
  @browser = browser
  @browser.cookies.clear
end

at_exit do
  browser.close
end

我也尝试过完全不关闭浏览器,但没有运气,它以某种方式自动完成。 我尝试了 Windows 和 CentOS。

phantomjs -v 
2.0.0
Using cucumber 1.3.19
Using selenium-webdriver 2.45.0
Using watir-webdriver 0.6.11
Using parallel 1.4.1
Using parallel_tests 1.3.9

我感觉这是一个 phantomjs/webdriver 错误...

【问题讨论】:

    标签: cucumber phantomjs watir watir-webdriver


    【解决方案1】:

    这可能是您的 3 个虚拟实例对端口 8910 的竞争条件。类似于this问题。

    # env.rb
    Before do
      sleep ENV['TEST_ENV_NUMBER'].to_i
      @browser = Watir::Browser.new :phantomjs, args: %w(--ignore-ssl-errors=true)
    end
    

    如果我正确读取了 ParallelTests 源,环境变量 TEST_ENV_NUMBER 将设置为每个进程的进程索引。所以第一个进程的 TEST_ENV_NUMBER 为 0。只要是这种情况,上面的 Before 挂钩将在初始化 Watir::Browser 之前休眠该秒数。这会稍微错开并行化,但它应该消除竞争条件。

    【讨论】:

    • 我读过那个问题,它可能会是类似的东西,但问题不在于启动幻影,而在于杀死它。测试运行良好 3 分钟,但当第一个进程完成时,它会杀死所有幻像。
    • 好的,所以我尝试了sleep ENV['TEST_ENV_NUMBER'].to_i,这次只有最后一次测试失败了。 ...再进行一些测试,我将它添加到两个地方,它通过了...奇怪...
    • 所以你是对的,但是我的 env.rb 在浏览器设置之前有一些东西,所以即使 1s 有时也不够,无论如何非常感谢!!!
    猜你喜欢
    • 2011-04-28
    • 1970-01-01
    • 2013-05-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多