如何使用Capybara匹配动态图片文件名?

How to use Capybara to match dynamic image file names?

我一直在尝试使用 Capybara 将实际图像文件名与预期文件名相匹配。

我有图像存储在 app/assets/images,例如image01.png.

这些图像的文件名存储在一个或多个表的image_file_name 字段中。

它们是在多个 html.erb 文件之一中使用 <%= @object.image_file_name %> 呈现的。但是,呈现的实际文件名在右侧有一系列字母数字字符,例如assets/image01-d4f7d162a9ecb8877e69bc96a8ca03bd7531c8faf7be7c65ba60c14e7c6fe530.png'.

我已经尝试了以下期望并且它们有效:

expect(page).to have_css("img[src*='image01-d4f7d162a9ecb8877e69bc96a8ca03bd7531c8faf7be7c65ba60c14e7c6fe530.png']")
expect(page).to have_css("img[src*='image01']")

请问有没有一种方法可以验证图像文件名是否以 image01 开头并以 .png 结尾,而不管中间是什么?如果 hav_css 无法实现,have_selectorhave_xpath 怎么样?

您可以将多个 CSS 属性选择器应用于同一字段,因此

expect(page).to have_css(“img[src^=‘image01’][src$=‘.png’]”)

应该做你想做的事