如何计算无序列表中的列表元素? (RSpec的/水豚)

时间:2014-06-10 09:38:43

标签: ruby-on-rails rspec cucumber capybara capybara-webkit

在我的网站上,我有这个清单:

<ul class="test">
  <li class="social_1"></li>
  <li class="social_2"></li>
  <li class="social_3"></li>
  <li class="social_3"></li>
</ul>

我的问题是:如何在 ul 类测试中计算 li 我试过这个:

my_ul = page.find("ul[class='test']")
my_ul.each do |li|
  pp li['class']
end

但它没有用。

无论如何要做我上面编码的事情吗?

3 个答案:

答案 0 :(得分:12)

假设ul父元素的id = parent ..你可以这样做

  list = Array.new 
  list = find('#parent ul').all('li')

现在你可以简单地获取列表大小

list.size 

你可以从阵列中的所有li中获益,也可以像这样在每个li中收集文本

  list = find('#parent ul').all('li').collect(&:text)

答案 1 :(得分:6)

我建议使用新的RSpec 3语法来计算Capybara的元素:

it "should have 4 li elements" do
   expect(find('ul.text')).to have_selector('li', count: 4)
end

此处提供更多信息:https://github.com/jnicklas/capybara#querying

答案 2 :(得分:1)

使用page.all("ul.test li").size