You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Rails 6.1+Capybara XPath功能测试无法检测到图片的问题求助

问题:Capybara功能测试中用XPath验证带资产指纹的图片存在

环境

  • Rails 6.1
  • Ruby 3.1.1
  • Capybara(用于Feature Specs功能测试)
  • 首次使用XPath

视图代码

视图中图片源文件存放路径:app/assets/images/bars/,视图代码如下:

<% @levels.each do |l| %>
  <% image=l.color.downcase + '-bar.png' %>
  <p><%= image_tag("bars/#{image}", id: l.color.downcase, :size => "25x50") %></p>
<% end %>

测试代码(首次尝试)

scenario "it has the level 1 image" do
 # 目标图片源文件为 /app/assets/images/bars/white-bar.png
 expect(page).to have_xpath("/img[contains( @src, 'white-bar' )]")
end

已尝试的无效写法

  • expect(page).to have_xpath("/img[contains( @src, 'white-bar.png' )]")
  • expect(page).to have_xpath("/img[contains( @src, '/bars/white-bar.png' )]")
  • expect(page).to have_xpath("/img[contains( @src, '/images/bars/white-bar.png' )]")

实际页面的图片路径(开发者工具查看)

页面渲染后,图片的src带有Rails自动添加的资产指纹,实际路径为:

/assets/bars/white-bar-31c13c54bf0beaccadbdcb342490b30d380f235669ec6c31b316f6ed8100722f.png

路径前缀为/assets/bars/,不含/images,长串字符是Rails的资产指纹。

需求与疑问

需要编写测试确保页面中目标图片存在,按XPath逻辑,contains(@src, 'white-bar')应该能匹配到唯一的目标图片,但所有尝试都无效,希望了解问题原因及解决方法。

内容的提问来源于stack exchange,提问作者John Cowan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.03 22:57:22