如何在Cypress should断言中使用逻辑OR实现大小写不敏感校验?
解决Cypress忽略大小写的文本包含断言问题
其实你原来的代码逻辑有点小问题哦——search_word || search_word.toLowerCase()并不是在做“断言包含原词或小写词”的判断,而是JavaScript的逻辑或运算:只要search_word是真值,就只会用原词去匹配,所以当元素里的文本是小写的hot时,原词Hot自然匹配不上,就会报错啦。
给你两种靠谱的解决方法,都能实现忽略大小写的文本包含断言:
方法一:使用正则表达式(最简洁)
Cypress的contain.text断言支持接收正则表达式,加上i标志就能忽略大小写:
cy.get(element).should('contain.text', new RegExp(search_word, 'i'))
比如你的场景里,search_word是Hot,正则/Hot/i会匹配任何大小写组合的hot(不管是Hot、hot还是HOT),所以元素里的Ultimate hot就能成功匹配啦。
方法二:统一转成小写后比较(更直观)
如果你对正则不太熟悉,可以先把元素的文本转成小写,再和搜索词的小写版本对比:
cy.get(element) .invoke('text') // 获取元素的文本内容 .then(text => text.toLowerCase()) // 转成小写 .should('contain', search_word.toLowerCase()) // 断言包含小写后的搜索词
这种方法的逻辑很直白:把双方都转成同一大小写,就不用管原来的文本是大写还是小写了。
两种方法都能解决你的问题,选你觉得顺手的就行~
内容的提问来源于stack exchange,提问作者Ara Galstyan
相关产品推荐
相关产品推荐

