可以通过点击水豚来附加文件

It is possible to attach files by clicking on capybara

我正在使用 capybaracucumberwebDriver 来执行文件测试

我正在做一个研究,需要附加一个文件,但是文件inputdom中不存在,只有在点击按钮时才会创建,目前我的代码是这样的:

HTML

<a id="input-id" href="#" onClick="callInput">Attach</a>

脚本

function callInput(){

    const input = document.createElement("input");
    input.style.display = "none";
    input.type = "file";
    input.click();

}

如果可能的话,唯一的方法就是使用 attach_file 块模式

attach_file('/file/to/be/attached') do
  click_link('Attach')
end

由于您将显示设置为 'none' 而不是通过将其设置为屏幕外或其他方法进行隐藏,因此如果上述方法无效,make_visible 选项可能会使它起作用

attach_file('/file/to/be/attached', make_visible: true) do
  click_link('Attach')
end

如果这些都不起作用,那么 Capybara 就无法使用您在页面上实现文件上传的方式。

注意:这两种方法都有效的可能性很低,因为您实际上从未将输入附加到页面,因此事件不会被路由到 Capybara 可以检测到的任何地方。