用水豚进行平行硒试验

Dan*_*iel 8 ruby selenium rspec ruby-on-rails capybara

背景:

我有一组针对我的Rails 3应用程序运行的Capybara集成测试.对于测试套件的其他部分,我正在使用Rspec.

我的Mac OSX开发机器上有一个selenium 2.6.0独立服务器集线器.

java -jar selenium-server-standalone-2.6.0.jar -role hub
Run Code Online (Sandbox Code Playgroud)

我正在运行几个虚拟机,每个虚拟机都连接到具有selenium节点的集线器:

java -jar selenium-server-standalone-2.6.0.jar -role webdriver -hub http://0.0.1.12:4444/grid/register port 5555 -browser browserName="internet explorer",version=8,platform=WINDOWS
Run Code Online (Sandbox Code Playgroud)

这很好用,在这个屏幕截图中,控制台显示我有一个连接到集线器的IE7和IE8浏览器:

中心控制台显示已连接的节点

我已经设置了capybara来对抗selenium hub(将测试委托给节点).

Capybara.app_host = "myapp.dev"
Capybara.default_driver = :selenium
Capybara.register_driver :selenium do |app|
  Capybara::Selenium::Driver.new(app,
    :browser => :remote,
    :url => "http://localhost:4444/wd/hub",
    :desired_capabilities => :internet_explorer)
end
Run Code Online (Sandbox Code Playgroud)

它可以工作,但它只会在单个internet_explorer节点上运行测试.它似乎是"排在第一位"; 如果我将其关闭,测试将在另一个节点上成功运行.

我一直在尝试parallel_tests项目,按照建议配置capybara,但这仍然只会启动一个集成测试.

如何同时在所有internet_explorer节点上运行我的集成?

奖金问题:如果我想在所有连接的节点上运行我的集成测试,无论浏览器功能如何,我该怎么做?

use*_*594 1

对于 IE webdrive,您最多可以在一个物理节点上运行 1 个测试!如果您想使用 IE Webdriver 实现并行性,可以尝试向集线器添加/注册更多物理节点。

对于上面的 Hub 控制台屏幕截图,它也只显示了一个 IE 图标。该消息“支持最多 5 ....”是错误的,但您可以考虑其下方显示的各个浏览器的图标数量。