【问题标题】:Sleep function in Capybara/Cucumber?Capybara/Cucumber 的睡眠功能?
【发布时间】:2014-01-08 15:17:20
【问题描述】:

我的网站上有一个页面,我正在尝试对其进行测试,该页面要求用户在该页面上至少停留 5 秒钟,然后才能继续。 Capybara 有没有办法让我的 Cucumber 测试在该页面上暂停并等待五秒钟,然后再继续我描述的下一步?

【问题讨论】:

    标签: ruby-on-rails ruby cucumber capybara


    【解决方案1】:

    我的步骤定义中有这个:

    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...
    

    【讨论】:

    • 除了一般的睡眠步骤之外,我还建议将睡眠添加到其目的范围内的特定步骤中。例如:如果步骤是“鉴于我在等待页面上”,则在该步骤中 @blim8183 应该休眠 5 秒。然后可以使用这个更集中的步骤。
    • 如果你把这个一般的睡眠步骤放在你的步骤文件中,那么你可以call it from other stepsstep "I wait for 5 seconds"。我用它来为许多其他步骤添加轻微的延迟。
    【解决方案2】:

    像这样动态定义时间单位也很棒:

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

    【讨论】:

    • 永远不要使用eval。你只是自找麻烦。 sleep(n.to_i.send(unit))
    猜你喜欢
    • 1970-01-01
    • 2011-02-03
    • 1970-01-01
    • 1970-01-01
    • 2021-04-12
    • 2011-04-08
    • 2014-12-14
    • 1970-01-01
    相关资源
    最近更新 更多