Testcafe断言异常:内容一致却提示不匹配问题求助
Testcafe断言视觉一致却失败的解决思路
问题根源很明确:你HTML里的提示文本是Field 'HANDLING POINT' is required.,其中HANDLING和POINT之间的是非断空格( ),而你断言代码里用的是普通空格。这俩字符视觉上完全一样,但ASCII编码不同(普通空格是\x20,非断空格是\xa0),导致Testcafe的严格相等断言失败。而SHIFT的提示用的是普通空格,所以能正常通过。
给你几个可行的解决方法:
直接用非断空格的Unicode转义字符写断言:
await t.expect(Selector(".jsError").child().child().innerText).eql("Field 'HANDLING\xa0POINT' is required.");用正则匹配兼容所有空白字符:
await t.expect(Selector(".jsError").child().child().innerText).match(/Field 'HANDLING\sPOINT' is required./);这里
\s会匹配普通空格、非断空格等所有空白类型。先替换文本里的非断空格再断言:
const errorText = await Selector(".jsError").child().child().innerText; await t.expect(errorText.replace(/\xa0/g, ' ')).eql("Field 'HANDLING POINT' is required.");优化选择器精准定位元素:
多层child()不够可靠,直接定位到第一个错误提示的<li>:await t.expect(Selector(".jsError li").nth(0).innerText).eql("Field 'HANDLING\xa0POINT' is required.");
内容的提问来源于stack exchange,提问作者robertryanmoore
相关产品推荐
相关产品推荐

