我如何在 Capybara 的许多元素的第一个元素内断言?
How do I assert within the first element of many in Capybara?
我想做这样的事情:
within '.Collection .Thing:first-child' do
page.must_have_content 'lorem ipsum'
end
其中 .Thing
只是 Collection 中的许多其他事物之一。我试过上面的代码,但它说它不明确。有没有办法解决歧义?
如果您真的只想要页面上的第一个匹配元素,您可以这样做
within first('.Collection .Thing:first-child', minimum: 1) do
page.must_have_content 'lorem ipsum'
end
如果页面已经完全加载,则不一定需要 minimum: 1 选项,但是如果页面尚未完全加载,它会让 Capybara 等待至少一个匹配元素显示在页面上 (或通过 ajax 等方式填充列表)。如果没有它,如果页面上没有匹配的元素,#first 通常会 return 立即返回 nil
我想做这样的事情:
within '.Collection .Thing:first-child' do
page.must_have_content 'lorem ipsum'
end
其中 .Thing
只是 Collection 中的许多其他事物之一。我试过上面的代码,但它说它不明确。有没有办法解决歧义?
如果您真的只想要页面上的第一个匹配元素,您可以这样做
within first('.Collection .Thing:first-child', minimum: 1) do
page.must_have_content 'lorem ipsum'
end
如果页面已经完全加载,则不一定需要 minimum: 1 选项,但是如果页面尚未完全加载,它会让 Capybara 等待至少一个匹配元素显示在页面上 (或通过 ajax 等方式填充列表)。如果没有它,如果页面上没有匹配的元素,#first 通常会 return 立即返回 nil