Ruby中拼接两个姓名字段变量时缺少空格导致校验失败如何解决?
问题根因
- 姓氏输入框重复调用2次
Faker::Name.last_name输入,第二次输入会在原有内容后追加新姓氏,你存入@take_last_name的是第二次生成的姓氏,和输入框实际填入的完整内容不符 - 拼接名、姓变量时未在中间插入空格,和登录区「名+空格+姓」的展示格式不匹配,直接导致断言失败
- 部分测试框架中
send_keys方法返回的是元素对象而非输入后的文本值,直接链式调用.value可能出现取值不符合预期的问题
修复方案
标准修复代码
# 先生成随机值再填入输入框,避免重复调用faker生成不一致的内容 @take_first_name = Faker::Name.first_name input_first_name.send_keys(@take_first_name) # 输入完成后单独取值,兼容性更强 @take_first_name = input_first_name.value @take_last_name = Faker::Name.last_name input_last_name.send_keys(@take_last_name) @take_last_name = input_last_name.value def logged_area # 拼接时中间插入空格,匹配页面展示格式 expected_full_name = "#{@take_first_name} #{@take_last_name}" pp expected_full_name actual_full_name = view_user.text expect(actual_full_name).to eql(expected_full_name) end
兼容优化方案
如果页面姓名中间可能出现多个空格、或者存在前后冗余空格,可以用正则匹配兼容格式差异,不用严格对齐空格数量:
def logged_area actual_full_name = view_user.text.strip expect(actual_full_name).to match(/^#{Regexp.escape(@take_first_name)}\s+#{Regexp.escape(@take_last_name)}$/) end
内容的提问来源于stack exchange,提问作者Tadeu
相关产品推荐
相关产品推荐

