我尝试使用不同的选项附加文件,但它无效。
1)attach_file('file-input', Rails.root + 'spec/files/books.jpg',:visible => false)
错误:无法找到文件字段"文件输入"
如果我使用page.has_css? ('.file-input')
能够找到CSS。
我也试过使用其他定位器:
2)attach_file('#library_resource_files', Rails.root + 'spec/files/books.jpg',:visible => false)
错误:无法找到文件字段"文件输入"
场景:点击上传按钮click_link'上传'这工作正常。 并弹出,我需要在哪里点击按钮来附加文件。
这是HTML:
<input multiple="multiple" accept="image/*,
audio/*,
video/*,
application/x-shockwave-flash,
application/vnd.adobe.flash.movie,
application/pdf,
application/msword,
application/vnd.google-apps.*,
application/vnd.openxmlformats-officedocument.spreadsheetml.sheet,
application/vnd.openxmlformats-officedocument.presentationml.presentation,
application/vnd.openxmlformats-officedocument.wordprocessingml.document,
application/octet-stream,
text/plain"
class="file-input" type="file"
name="library_resource[files][]" id="library_resource_files">
答案 0 :(得分:1)
来自attach_file
- http://www.rubydoc.info/gems/capybara/Capybara/Node/Actions#attach_file-instance_method的文档 - 它根据id,name或关联标签文本匹配元素(它与类名或CSS选择器字符串不匹配)。所以你会想要像
attach_file('library_resource_files', Rails.root + 'spec/files/books.jpg')
出于造型原因,实际的文件输入通常在页面上不可见,如果这对您来说是正确的,那么您可以(取决于所使用的驱动程序)能够做到
attach_file('library_resource_files', Rails.root + 'spec/files/books.jpg', visible: false)
如果不起作用,则需要使用execute_script
修改输入CSS,以便在调用attach_file之前使其可见