Capybara期待page.selector to_have

时间:2016-06-26 21:54:41

标签: rspec capybara rspec-rails ruby-on-rails-5

我需要验证页面特定部分中是否存在某些文本。

expect(page).to会输出太多的文字,对于持有协议条款的页面来说尤其令人讨厌,而这些条款总是很长。

我希望将expect(page).to(have_text(转换为expect('#id').to(have_text(...)

之类的内容

我无法弄清楚如何选择ID引用的页面部分。我应该在expect(page)内写下within('#id')吗?

编辑:如果可能的话,一个解决嵌套标签的解决方案

<div id="id">
  <span class="nested">...</span>
  Text I want to check with have_text()
</div>`

1 个答案:

答案 0 :(得分:4)

这里有多个选择,

section = find(:css, '#id') #the :css may be optional depending on your Capybara.default_selector setting
# or - section = find_by_id('id')
expect(section).to have_text(...)

expect(page).to have_css('#id', text: '...')

expect(page).to have_selector(:id, 'id', text: '...')

取决于您是否需要其他元素。