我在标签中隐藏了输入:
<label for="upload">
<input class="hidden" type="file" name="file[picture]">
</label>
当我点击标签时,我附上一个文件,然后确认。
弹出模态窗口后,我需要找到合适的div类。
如何在水豚的帮助下测试?
答案 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