通常,附加文件相对简单
如果我有一个看起来像这样的元素;
<input
id="DataFile_123"
type="file">
我可以写这个
find(:xpath, 'input[@id="Data_123"]').send_keys('c:\file_dir\file.txt')
使用knockout.js我看到的文件类型如此...
<input
type="file"
data-bind="value: fileName,
event: { change: handleFileChange }"
accept=".csv">
我从AlexZeitler http://jsfiddle.net/AlexZeitler/fPWFd/
中找到了确切文件类型的摘要尝试查找此输入会产生与以下相同的错误
当我用类似的硒代码追踪这样的东西时,我被阻止
find(:xpath, 'input[@type="file"]').send_keys('c:\file_dir\file.txt') #ElementNotFound
执行脚本周围的语法糖会引发我的注意。
execute_script('handleFileChange.js') # returns handleFileChange is not defined
有人在淘汰赛中附加文件有好运吗?让我知道。
答案 0 :(得分:1)
通常隐藏文件输入字段以允许更好的样式。有许多方法可以隐藏字段并且没有看到CSS正在应用它是不可能100%确定的方法来修复它,但是如果你使用最新版本的Capybara并且页面上只有一个文件输入你可以尝试
attach_file('c:\file_dir\file.txt', make_visible: true)
那将尝试找到不可见的文件元素,修改元素CSS以使其可见,附加文件,然后将CSS恢复到原来的状态。如果页面上有多个文件输入元素,您仍然可以通过作用于仅包含一个页面的可见区域来使用它。