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)
解决方案
您发布的错误消息是您尝试上传的文件不存在时返回的错误消息。
问题是你不应该input[id=file]
作为文件名传递。我不确定您使用的是哪个版本的 Capybara,但在当前版本attach_file
中def attach_file(locator = nil, paths, make_visible: nil, **options)
,定位器是文件输入的名称、ID 或相关标签文本,路径是要上传的文件的全名(或者可能是文件名数组)。问题在于,您显示的任何代码似乎都不会产生您声称的错误,除非您交换了参数,并且错误地传递了 CSS 选择器而不是定位器。
注意:带有一些驱动程序(应该是任何支持 JS 的驱动程序)的 Capybara 3.15 支持 beta 模式attach_file
,您不必指定文件输入,而只需要与用户触发文件选择的任何操作进行交互即可在尝试使用隐藏文件输入元素的 UI 进行测试时很有帮助
attach_file 'PATH' do
click_button 'Select File' # whatever action a user would do to select the file
end
推荐阅读
- python-3.x - 打开一个新窗口并返回
- java - 自定义自动滑块?
- spring-boot - 将 Spring AMQP 消费者/生产者服务迁移到 Spring Stream 源的问题
- junit - java.lang.AssertionError: expected:<1> but was:<30> in Junit
- python - 如何修复 Sphinx“警告:自动模块的签名无效”错误
- python - 如何每 15 秒运行一次循环并在同一个数字上更新结果?
- angular - 如何使用 EventEmitter 获取输出的值?
- jquery - 如何摆脱表格数据第一行的“表格中没有可用数据”消息?
- python - 将两种格式结合在一起
- scala - gradlew gatlingRun 不运行任何测试