我的并行测试与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
我感觉这是一个幻影/网络驱动程序错误...
答案 0 :(得分: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之前休眠该秒数。这将使并行化错开一点,但它应该消除竞争条件。