2011-09-27 166 views
8

背景:并行运行Selenium测试与水豚

我有一组的运行对我的Rails 3应用水豚集成测试。对于测试套件的其他部分,我使用的是Rspec

我在我的Mac OSX开发机器上安装了一个selenium 2.6.0独立服务器集线器。

java -jar selenium-server-standalone-2.6.0.jar -role hub 

我运行多个虚拟机,每个挂在轮毂与硒节点:

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 

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

The hub console showing connected nodes

我设置水豚兑硒枢纽运行(即代表测试到节点)。

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 

它可以工作,但它只会在单个internet_explorer节点上运行测试。它似乎是“第一线”的;如果我关闭它,测试将成功运行在另一个节点上。

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

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

奖金的问题:,如果我想所有连接的节点上运行我的集成测试,不管浏览器的能力,我会怎么做呢?

+0

丹尼尔,我和你有同样的问题,你能找到解决方案吗? – Farooq

+0

我发现如果您有1个Hub和3个节点正在运行,并且您在3个不同的选项卡中同时运行3个测试,则测试将在所有节点中运行。 1测试每个节点。基本上测试会在线检测下一个空节点并在那里运行。 – Farooq

回答

1

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

关于以上屏幕截图的集线器控制台,它也显示你只有一个IE图标。该消息是错误的,“支持多达5 ....”,但你可以考虑在它下面显示的各个浏览器的图标的数量。

2

在这里,您必须针对不同的浏览器启动相同的测试,因此可以尝试启动两个测试过程,即两次运行相同的命令。

当您启动节点时,网格将处理不同节点上的执行。

在你的情况下,你正在执行测试,并且只有在套件/进程就网格开始。仅用于测试目的尝试两次接连发射这些测试。如果您无法通过此操作实现使用Ant或类似的东西来控制您的测试执行。