使用RSPEC中的Capybara定位元素

时间:2016-03-18 05:52:24

标签: rspec capybara capybara-webkit

  

使用时如何获取或定位上传图像的元素   bootstrap上传文件。

这是我上传的HTML。

<input id="input-id" name="user[image]" type="file" class="file" data-preview-file-type="text" data-show-preview="false" data-show-upload="false" data-show-caption="true" />

以下是浏览器中呈现的html:

<span class="file-input file-input-new">
<div class="kv-upload-progress hide"></div>
<div class="input-group ">
   <div tabindex="-1" class="form-control file-caption  kv-fileinput-caption">
   <span class="file-caption-ellipsis">…</span>
   <div class="file-caption-name"></div>
</div>
   <div class="input-group-btn">
       <button type="button" title="Clear selected files" class="btn btn-default fileinput-remove fileinput-remove-button"><i class="glyphicon glyphicon-trash"></i> Remove</button>
       <button type="button" title="Abort ongoing upload" class="hide btn btn-default fileinput-cancel fileinput-cancel-button"><i class="glyphicon glyphicon-ban-circle"></i> Cancel</button>

       <div class="btn btn-primary btn-file"> <i class="glyphicon glyphicon-folder-open"></i> &nbsp;Browse … <input id="input-id" name="user[image]" type="file" class="file" data-preview-file-type="text" data-show-preview="false" data-show-upload="false" data-show-caption="true"></div>
   </div>
</div>
</span>

这是我的Capybara代码定位并传递图像:

attach_file('what_here', Rails.root + 'public/sample.jpg')

我为上面的 what_here 尝试了不同的值,但不幸的是我收到了错误:

Failure/Error: attach_file('file-caption', Rails.root + 'public/sample.jpg')

     Capybara::ElementNotFound:
       Unable to find file field "file-caption(tried diff. selector here)"

请帮忙!

1 个答案:

答案 0 :(得分:0)

这是失败的,因为页面上看不到文件输入。这在文件输入中很常见,因为它们经常被隐藏以允许使用其他可转换元素。要测试它们,您需要使用execute_script来调整元素的CSS,使其在页面上可见,然后可以在其上调用attach_file。你需要添加到元素的CSS取决于它的隐藏方式,不透明度,zindex,位置等。一旦你看到它就可以了,那么你可以做到

attach_file('input-id', ...)