webdriver - 可以通过点击水豚来附加文件
问题描述
我正在使用capybara
,cucumber
并webDriver
执行文件测试
我正在研究,需要附加一个文件,但是文件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();
}
解决方案
如果可能的话,唯一的方法是使用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 可以检测到的任何地方。
推荐阅读
- javascript - 尽管使用了唯一的字符串,为什么我的代码表现得就像我在字典中有重复的键?Javascript / Appscript
- c++ - 如何使用模板成员函数作为另一个模板成员函数的参数?
- c# - 获取网络接口的全名C#
- reactjs - Formik 对象不渲染
- ios - 每个应用程序可以有多个应用程序剪辑吗?
- css - CSS 淡出页面之间的过渡
- database - Create 2 documents when posting to CouchDB
- java - Project Reactor 条件流的最佳实践
- react-native - React native - 单页导航,滚动到特定部分
- python - 根据现有变量在数据框中创建新变量