如何使用水豚上传资产?

时间:2019-03-21 13:26:42

标签: ruby capybara

我有

<input type="file" name="file" id="file" class="form-control-file teste" style="display: inline" ;="" accept=".pdf">

然后尝试

attach_file('file','PATH')

也尝试

find('form input[type="file"]').set('PATH')

但我的结果是

cannot attach file, input[id=file] does not exist (Capybara::FileNotFound)

1 个答案:

答案 0 :(得分:0)

您发布的错误消息是当您尝试上传的文件不存在时返回的错误消息。

问题在于您不应传递input[id=file]作为文件名。我不确定您使用的是什么版本的Capybara,但是在当前版本attach_file中定义为def attach_file(locator = nil, paths, make_visible: nil, **options),其中定位符是文件输入的名称,id或相关标签文本以及路径是要上传的文件的全名(或可能是文件名数组)。这样做的问题在于,除非交换了参数并且错误地传递了CSS选择器而不是定位器,否则显示的任何代码似乎都不会产生您要求的错误。

注意:带有一些驱动程序的Capybara 3.15(应该是任何具有JS功能的驱动程序)支持attach_file的beta模式,您无需指定文件输入,而只需要与用户交互即可触发文件选择,这在尝试使用隐藏文件输入元素的UI进行测试时会很有帮助

attach_file 'PATH' do
  click_button 'Select File' # whatever action a user would do to select the file
end