如何选择Capybara没有任何文字的元素?

时间:2016-09-10 15:52:16

标签: ruby-on-rails rspec capybara

我正在测试搜索页面,其中用户按值过滤记录。长话短说 - 我需要检查节点中没有任何文本的元素数量(我重新设置过滤器并检查没有任何文本的元素是否出现)。

如何选择没有任何文字的所有元素?

我正在使用它,但无论如何它都会返回所有元素:

expect(page.all('table.index tbody td.status', text: '').count).to be == 0

1 个答案:

答案 0 :(得分:1)

:text选项采用字符串或正则表达式。当它是一个字符串时,它会进行子串匹配,因此''将匹配所有元素。你想要的是

expect(page).to have_no_css('table.index tbody td.status', text: /^$/)

expect(page).to have_css('table.index tbody td.status', text: /^$/, count: 0)

99.9%的时间你最好使用提供的匹配器(has_css,have_selector等),而不是调用all的结果,因为你会得到Capybaras等待/重试行为期待