关于 Watirgrid ...
我已经添加了一个迭代方法,可以传递一个watir代码块来执行远程浏览器对象。因此,浏览器对象在步骤之间变得可重用。这里有一个更新的详细的cucumber示例:
https://github.com/90kts/watirgrid/blob/master/examples/cucumber/step_definitions/example_steps.rb
你的cuke步骤最终看起来像这样:
Given /^navigate to the portal$/ do
@grid.iterate {|browser| browser.goto "http://gridinit.com/examples/logon.html" }
end
When /^they enter their credentials$/ do
@grid.iterate do |browser|
browser.text_field(:name => "email").set "tim@mahenterprize.com"
browser.text_field(:name => "password").set "mahsecretz"
browser.button(:type => "submit").click
end
end
Then /^they should see their account settings$/ do
@grid.iterate do |browser|
browser.text.should =~ /Maybe I should get a real Gridinit account/
end
end
如果您有任何问题,请随时联系我。我们还在EC2上提供了watirgrid的商业实现,可供beta测试,链接为http://gridinit.com/public/examples,请关注更多使用不同测试框架的更新!
顺便说一下,控制/迭代助手已经包含在最新版本的watirgrid v1.1.2中。
或者,为了在每个提供商上使用不同的场景并行执行,我只需拥有一个类似于以下内容的support/env.rb文件:
require 'watirgrid'
require 'rspec/expectations';
ENV["GRID"] = 'true'
ENV["controller_uri"] = "druby://10.0.1.3:11235"
if ENV["GRID"] then
params = {}
params[:controller_uri] = ENV["controller_uri"]
params[:browser] = 'chrome'
grid ||= Watir::Grid.new(params)
grid.start(:initiate => true, :quantity => 1, :take_all => true)
else
@browser ||= Watir::Browser.new :chrome
end
Before do |scenario|
@browser = grid.providers.first
end
at_exit do
grid.iterate do |browser|
browser.close
end
grid.release_tuples
end
注意,我正在使用
:take_all => true
来获取对提供程序的独占访问权,并在
at_exit
时将其释放回网格...然后,我会使用CLI从单独的测试运行器调用我的场景,可能包装在一个bash或DOS脚本中。
cucumber features --name "Name of scenario 1"
cucumber features --name "Name of scenario 2"
cucumber features --name "Name of scenario 3"
...
etc