我如何在Capybara的许多人的第一个元素中断言?

时间:2015-10-13 09:16:18

标签: capybara minitest

我想做这样的事情:

within '.Collection .Thing:first-child' do
  page.must_have_content 'lorem ipsum'
end

.Thing只是Collection中许多其他内容之一。我尝试了上面的代码,但它说这是模棱两可的。有没有办法解决歧义?

1 个答案:

答案 0 :(得分:1)

如果您真的只想要页面上的第一个匹配元素,那么

within first('.Collection .Thing:first-child', minimum: 1) do
  page.must_have_content 'lorem ipsum'
end

如果页面已经完全加载,则必须使用最小值:1选项,但如果页面尚未完全填充,它将使Capybara等待至少一个匹配元素显示在页面上加载(或列表通过ajax等填充)。没有它#first如果页面上没有匹配的元素,通常会立即返回nil