用水豚进行平行硒试验

时间:2011-09-27 07:55:12

标签: ruby-on-rails ruby selenium rspec capybara

背景:

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

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

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

我正在运行多个虚拟机,每个虚拟机都连接到具有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

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

The hub console showing connected nodes

我已经设置了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

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

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

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

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

2 个答案:

答案 0 :(得分:3)

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

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

在您的情况下,您正在执行测试,并且仅针对Grid启动套件/进程。仅用于测试目的尝试一次又一次地触发这些测试。如果您无法通过此使用Ant或类似的东西来控制您的测试执行。

答案 1 :(得分:1)

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

关于集线器控制台的上述屏幕截图,它还只显示一个IE图标。消息错误“支持最多5个....”但您可以考虑在其下方显示的各个浏览器的图标数量。