在使用Page Object gem时,我正试图从页面中提取文本以验证错误消息。其中一条错误消息包含双引号,但当页面对象从页面中提取文本时,它会提取其他一些字符。
expected ["Please select a category other than the Default â?oEMSâ?? before saving."]
to include "Please select a category other than the Default \"EMS\" before saving."
(RSpec::Expectations::ExpectationNotMetError)
我不太确定如何逃避这些 - 我不确定在哪里可以使用正则表达式并且能够逃脱这些奇怪的角色。
答案 0 :(得分:1)
老实说,你的验证过于复杂。
我建议简化你想要做的事情,先问问自己:引号中的部分是否是你验证的关键部分?
如果是,请通过执行String.contains(" EMS")来隔离它。
如果不是,那么你可能做了太多工作,只检查验证中你需要的东西:
String.beginsWith("请选择默认&#34以外的类别;)
关于您遇到的实际问题,从技术层面来看,您遇到了编码问题。
,在将结果字符串传递给验证之前,使用utf-8对结果字符串进行编码 祝你好运答案 1 :(得分:0)
很可能沿线的某个地方不正确地编码了字符串。 (tipoff是带有加号的字符,后跟val userFriends=userJson.select($"friends",$"user_id")
val result_df =
userFriends.select($"friends",$"user_id")
.rdd
.map(x => (x.getList(0).toArray.map(_.toString).count(z=>true)),x.getInt(1)))
.toDF("friendsCount","user_id")
。)似乎很可能引号被转换为"智能引号"某处。 This table将Window-1252与UTF-8进行比较:
?
您要做的是检查代码中的各个位置,以找到字符串编码的第一个位置,而不是UTF-8:
Code Point Characters UTF-8 Bytes
Unicode Windows
1252 Expected Actual
------ ---- - --- -----------
U+201C 0x93 “ “ %E2 %80 %9C
U+201D 0x94 ” †%E2 %80 %9D
(为清楚起见,puts error_str.encoding
是保存您正在测试的字符串的变量。我使用error_str
,但您可能想要另一种方法来记录诊断消息。)
一旦找到未编码UTF-8的字符串,就可以将其转换为:
puts
或者,如果字符串在某处硬编码,只需替换字符串。
有关更多调试建议,请参阅:3 Steps to Fix Encoding Problems in Ruby和How to Get From They’re to They’re。