【问题标题】:Capybara not attaching file with input tagCapybara没有附加带有输入标签的文件
【发布时间】:2017-05-26 19:03:22
【问题描述】:

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

1) attach_file('file-input', Rails.root + 'spec/files/books.jpg',:visible => false)

错误:找不到文件字段“file-input”

如果我使用 page.has_css? ('.file-input') 它能够找到 CSS。

我也尝试使用其他定位器:

2)attach_file('#library_resource_files', Rails.root + 'spec/files/books.jpg',:visible => false)

错误:找不到文件字段“file-input”

场景:点击上传按钮 click_link 'Upload' 工作正常。 并弹出打开,我需要在哪里单击按钮来附加文件。

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

【问题讨论】:

    标签: html capybara


    【解决方案1】:

    来自attach_file - http://www.rubydoc.info/gems/capybara/Capybara/Node/Actions#attach_file-instance_method 的文档 - 它根据 id、名称或相关标签文本匹配元素(它与类名或 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 之前可见

    【讨论】:

    • 感谢托马斯的回复..我真的很感激。请指导如何识别隐藏的输入元素。 .在上面提到的html中,我无法识别。请指导。再次感谢-
    • @Meg 我不知道它是隐藏的。我说“通常不可见” - 了解您是否在真实浏览器中打开页面并检查元素,查看它是否占用页面上的任何空间或是否透明(不透明度:0)等.
    • 感谢@Thomas 的解释。我会努力弄清楚的。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多