使用 phantomjs ECONREFUSED 进行并行测试 Cucumber watir 测试
Parallel-test Cucumber watir testing with phantomjs ECONREFUSED
我在并行测试中遇到 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 错误...
这可能是您的 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 之前休眠该秒数。这会稍微错开并行化,但它应该会消除竞争条件。
我在并行测试中遇到 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 错误...
这可能是您的 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 之前休眠该秒数。这会稍微错开并行化,但它应该会消除竞争条件。