Capybara检查has_content上提交按钮的值?

时间:2018-04-11 02:01:33

标签: ruby-on-rails rspec capybara

现在我有一个网页,显示包含即将播放的歌曲的音频队列的列表。每个列表项实际上都是它自己的表单,其中的提交按钮将其值设置为特定的歌曲标题。

我试图编写一个功能测试,检查页面以确保它具有已添加到队列中的每首歌曲的内容,问题是capybara似乎没有'看'使用page.has_content时提交按钮的值。有办法解决这个问题吗?

1 个答案:

答案 0 :(得分:2)

假设您的HTML有类似

的内容
<input type="submit" value="Song name"/>

然后您想要使用has_button? / assert_button / have_button方法。这是因为has_content?会检查上述input元素所没有的元素的文本子元素的内容。默认情况下,has_button?(和关联)将匹配提交输入的id,value或title属性,但如果它是关键的,您可以指定特定的属性。在RSpec中,这看起来像

expect(page).to have_button('Song name')

或者如果歌曲名称可能与元素ID发生冲突,并且您希望100%确定它只是匹配值,那么

expect(page).to have_button(value: 'something')