我需要验证页面特定部分中是否存在某些文本。
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>`
答案 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: '...')
取决于您是否需要其他元素。