Capybara没有附加带输入标签的文件

时间:2017-01-11 20:33:33

标签: html capybara

我尝试使用不同的选项附加文件,但它无效。

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">

1 个答案:

答案 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之前使其可见