Dav*_*son 5 css xpath ruby-on-rails cucumber capybara
我有一个使用Cucumber和Capybara进行测试的Rails项目.我有一个使用Dropzone.js的文件上传页面.
我的上传工作很有用,可以使用对话框或拖放.测试是另一回事.
我的表格中有以下字段:
<input id="photo_image" multiple="multiple" name="image" type="hidden">
Run Code Online (Sandbox Code Playgroud)
但是,在步骤定义中,我尝试了一些查找和附加文件数据的方法,但它们都不起作用.
我试过fill_in:
fill_in "photo_image", with: photo
Run Code Online (Sandbox Code Playgroud)
我试过用css选择器找:
find('#photo_image').set photo
Run Code Online (Sandbox Code Playgroud)
我试过用xpath找到:
find(:xpath, "//input[@id='photo_image']").set photo
Run Code Online (Sandbox Code Playgroud)
但他们都没有看到隐藏的领域.
Unable to find css "#photo_image" (Capybara::ElementNotFound)
Unable to find xpath "//input[@id='photo_image']" (Capybara::ElementNotFound)
Unable to find field "photo_image" (Capybara::ElementNotFound)
Run Code Online (Sandbox Code Playgroud)
有没有可以使用Dropzone.js处理上传的测试方法还是没有希望?
And*_*lov 10
Capybara 2.1 默认情况下找不到隐藏元素.
您可以设置ignore_hidden_elements为false:
Capybara.ignore_hidden_elements = false
或者:visible为方法添加选项:
attach_file('photo_image', path_to_file, visible: false)
Run Code Online (Sandbox Code Playgroud)
我更喜欢第二个变体,因为在大多数情况下,在测试中找到的元素是可见的,如果其中一个被隐藏,最好让Capybara抛出异常.
注::visible选项也被大多数的水豚方法,在内部与工作的支持Capybara::Query(如find,all,has_css?,have_selector等)
你可以使用
it "should upload a file" do
visit upload_file_path
attach_file "uploadfile(id of field)", /path/to/file/to/upload
click_button "Upload File"
end
Run Code Online (Sandbox Code Playgroud)
do ... end 之间的步骤应该适用于 rspec + capybara 或 cucumber + capybara
为什么不使用 :js => true ,它也会帮助找到隐藏元素..
| 归档时间: |
|
| 查看次数: |
3630 次 |
| 最近记录: |