如何使用capybara测试隐藏输入上的文件附件?

时间:2016-06-27 08:21:05

标签: ruby-on-rails rspec capybara

我在标签中隐藏了输入:

<label for="upload">
  <input class="hidden" type="file" name="file[picture]">
</label>

当我点击标签时,我附上一个文件,然后确认。

弹出模态窗口后,我需要找到合适的div类。

如何在水豚的帮助下测试?

3 个答案:

答案 0 :(得分:21)

更新: Capybara 2.12为make_visible添加了attach_file选项,因此如果使用2.12+,您可以先试用

attach_file('file[picture]', 'path/to/file.png', make_visible: true)

之前直接使用execute_script

文件输入是一种特殊情况,因为它们经常因样式原因而隐藏,并使用系统模式进行交互。 Capybara很难填写页面上的隐藏字段,因为用户通常无法与他们进行交互,因此对于文件输入,通常的做法是使用execute_script使其可见,然后将其填入。

execute_script("$('input[name=\"file[picture]\"]').removeClass('hidden')") # assumes you have jQuery available - if not change to valid JS for your environment
attach_file('file[picture]', 'path/to/file.png') # takes id, name or label text of field not a random selector

答案 1 :(得分:5)

使用Capybara'2.7.1':

attach_file('file[picture]', 'path/to/file.png', visible: false)

答案 2 :(得分:2)

您可以采取以下措施:

find('label[for=upload]').click
attach_file('input[name="file[picture]"]'), 'path/to/file.png')

within '.modal-popup' do
   expect(page).to have_content '.divclass'
end