在对How do I find an image on a page with Cucumber/Capybara解决方案的评论中,有人问:
我似乎无法想象如何获得这个 使用生成的URL 蜻蜓。它们看起来像这样: /media/BAh_some_long_string_AwIw/12_11_52_810_5x5.jpg?s=7e360000,其中5x5.jpg是我的文件名。我有 试过类似的东西: // IMG [@src = “/媒体/ / #{图像}?S = *”] 但它不起作用。有什么提示吗? - Ramon Tayag 2月25日4:18
我有类似的问题,只是更糟糕 - 在我的情况下,生成的图像路径甚至不包含(jpg | png | gif)文件名,它们只有这些非常长的ID:
<img src="/media/BAhbB1sHOgZmSSIdNGQ4MTEyOGU3ZjViZmQwZTQ4MDAwMDAyBjoGRVRbCDoGcDoKdGh1bWJJIg0yMDB4MjAwIwY7BlQ" />
(使用带有mongo / gridfs的dragonfly)
这些路径渲染得很好,但我无法弄清楚如何在Cucumber / Capybara步骤中找到它们:P
有什么想法吗?我查看了Dragonfly's features,但他们只测试了图像本身的渲染,而没有检测到它是否存在于html页面中。
答案 0 :(得分:7)
在talking to Dragonfly's author之后回答我自己的问题(他正在努力让这更容易):
#route
match '/media/:dragonfly/:file_name', :to => Dragonfly[:images]
#model
class Store
include MongoMapper::Document
key :photo_uid, String
key :photo_name, String
image_accessor :photo
end
#view
<%= image_tag @store.photo.thumb('274x207#').url(:suffix => "/#{@store.photo_name}") if @store.photo %>
#cucumber
Then I should see the image "my_photo.png"
Then /^I should see the image "(.+)"$/ do |image|
page.should have_xpath("//img[contains(@src, \"#{image}\")]")
end
关键是在模型中添加[attachment] _name字段,Dragonfly自动填充,然后将其作为后缀传递给url()。除了生成的蜻蜓标识符之外,路由还需要允许:file_name param。