【问题标题】:How to check for multiple occurrences of a word using Capybara (or Webrat, I guess) and Cucumber?如何使用 Capybara(或 Webrat,我猜)和 Cucumber 检查单词的多次出现?
【发布时间】:2010-11-28 03:03:34
【问题描述】:

我知道/Interface \d/ 在页面上出现了 3 次。但我不知道如何在 Cucumber 中使用 Capybara 进行测试。这是我的第一次尝试:

Then /^(?:|I )should see \/([^\/]*)\/ (\d+)(?:x|X| times?)?$/ do |regexp, count|
  regexp = Regexp.new(regexp)
  count = count.to_i
  if page.respond_to? :should
    page.should have_xpath('//*', { :text => regexp, :count => count })
  else
    assert page.has_xpath?('//*', { :text => regexp, :count => count })
  end
end

但是,这对我的Then I should see /Interface \d+/ 3 times 返回 false。

我发现这是因为has_xpath 使用了all。把它放在我的测试中:

puts all(:xpath, '//*', { :text => regexp}).map {|e| pp e}

结果

#<Capybara::Element tag="html" path="/html">
#<Capybara::Element tag="body" path="/html/body">
#<Capybara::Element tag="div" path="/html/body/div">
#<Capybara::Element tag="div" path="/html/body/div/div[2]">
#<Capybara::Element tag="table" path="/html/body/div/div[2]/table">
#<Capybara::Element tag="tbody" path="/html/body/div/div[2]/table/tbody">
#<Capybara::Element tag="tr" path="/html/body/div/div[2]/table/tbody/tr[1]">
#<Capybara::Element tag="td" path="/html/body/div/div[2]/table/tbody/tr[1]/td[3]">
#<Capybara::Element tag="tr" path="/html/body/div/div[2]/table/tbody/tr[2]">
#<Capybara::Element tag="td" path="/html/body/div/div[2]/table/tbody/tr[2]/td[3]">
#<Capybara::Element tag="tr" path="/html/body/div/div[2]/table/tbody/tr[3]">
#<Capybara::Element tag="td" path="/html/body/div/div[2]/table/tbody/tr[3]/td[3]">

所以我在计算包含我的文本的元素的每一步。 :-\

我想也许has_content 会救我,但它不接受计数。

救命!

【问题讨论】:

    标签: ruby-on-rails ruby-on-rails-3 cucumber webrat capybara


    【解决方案1】:

    这样的事情应该可以工作:

    Then /^(?:|I )should see \/([^\/]*)\/ (\d+)(?:x|X| times?)?$/ do |regexp, count|
      regexp = Regexp.new(regexp)
      count = count.to_i
      page.find(:xpath, '//body').text.split(regexp).length.should == count+1
    end
    

    【讨论】:

    • 我不喜欢使用“within blah”的两个原因:1)它很脆。现在这些都在 中,但很快就会改变。我不想改变测试。 2)这不是真正从用户的角度来看,我喜欢在黄瓜功能上尽可能地坚持。
    • 很公平...我已经删除了 css 选择器建议。
    猜你喜欢
    相关资源
    最近更新 更多
    热门标签