水豚期望page.selector to_have

Cyr*_*ris 3 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>`
Run Code Online (Sandbox Code Playgroud)

Tho*_*ole 5

您在这里有多种选择

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(...)
Run Code Online (Sandbox Code Playgroud)

要么

expect(page).to have_css('#id', text: '...')
Run Code Online (Sandbox Code Playgroud)

要么

expect(page).to have_selector(:id, 'id', text: '...')
Run Code Online (Sandbox Code Playgroud)

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