2012-10-15 178 views
7

我在我的网站上有一个页面,我正在尝试测试,要求用户在继续操作之前至少在页面上花费五秒钟。水豚有没有办法让我的黄瓜测试在该页面暂停,然后等待五秒钟,然后继续我描述的下一步?水豚/黄瓜的睡眠功能?

回答

20

我有这个在我的步骤定义:

Given /^I wait for (\d+) seconds?$/ do |n| 
    sleep(n.to_i) 
end 

在你的特点:

Given I am on the whatever page 
And I wait for 5 seconds 
And I follow "A Link" 
# etc... 
+2

除了一般的睡眠步骤外,我还建议将睡眠添加到其范围内的特定步骤。例如:如果步骤是“鉴于我在等待页面上”,那么在步骤@ blim8183中应该休眠5秒钟。然后可以使用这个更集中的步骤。 – MrDanA

+0

完美的作品。谢谢! – blim8183

+0

如果你把这个普通的睡眠步骤放到你的步骤文件中,你可以[用其他步骤调用它](https://github.com/cucumber/cucumber/wiki/Calling-Steps-from-Step-Definitions)步骤“我等5秒钟”。我用这个来稍微延迟许多其他步骤。 – Jazz

1

这也将是巨大的动态定义的时间单位像这样的:

Given /^I wait for (\d+) (second|minute|hour)s?$/ do |n, unit| 
    sleep(eval("#{n.to_i}.#{unit}")) 
end 
+0

切勿使用'eval'。你只是在问问题。 '睡眠(n.to_i.send(单元))' –