首页 > 解决方案 > 可以通过点击水豚来附加文件

问题描述

我正在使用capybara,cucumberwebDriver执行文件测试

我正在研究,需要附加一个文件,但是文件input中不存在该文件dom,并且仅在单击按钮时创建,目前我的代码是这样的:

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();

}

标签: webdrivercucumbercapybara

解决方案


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

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

由于您将显示设置为“无”,而不是通过将其设置为屏幕外或其他方法来隐藏,因此如果上述内容没有,make_visible 选项可能会使其工作

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

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

注意:任何一种工作的几率都非常低,因为您实际上从未将输入附加到页面,因此事件不会被路由到 Capybara 可以检测到的任何地方。


推荐阅读