Ruby中使用RSpec做Capybara测试匹配h1内容失败如何解决?
错误原因
have_content匹配的是页面渲染后用户可见的纯文本内容,不会匹配HTML源码中的标签、属性等源码字符,你传入带<h1>标签的字符串自然无法匹配到对应内容。- Capybara处理文本时默认会将换行、连续多空格等空白字符合并为单个空格,直接传入带换行、缩进的源码文本也会因为格式不匹配导致断言失败。
正确写法
你需要先通过选择器定位到h1.glow-header元素,再对该元素的内容做断言,两种常用写法:
- 普通匹配(自动合并空白字符,适配大多数场景)
expect(page).to have_css('h1.glow-header', text: 'Galaxy Far, Far Away? Quick Trip to Mars? Pianeta has you covered.')
- 精确匹配空白(需要保留换行、空格格式时开启
normalize_ws: false)
expect(page).to have_css('h1.glow-header', text: "Galaxy Far, Far Away? Quick Trip to Mars?\n Pianeta has you covered.", normalize_ws: false)
内容的提问来源于stack exchange,提问作者Anna
相关产品推荐
相关产品推荐

