Cypress技术问题:如何检查div元素包含两个字符串中的一个?
解决Cypress检查元素文本为指定二选一的问题
你的代码存在两个问题:一是Cypress没有have.any.text这个内置断言,二是参数传递方式不符合语法要求。下面提供两种可行的解决方法:
方法一:使用should回调结合Chai断言
通过回调函数获取元素文本,再用Chai的oneOf断言判断文本是否为指定的两个字符串之一,这种方式灵活性更高,还能处理文本前后空格的干扰:
getText(text1, text2) { cy.get('[data-cy="default-login-failed-label"]').should(($el) => { const elementText = $el.text().trim(); expect(elementText).to.be.oneOf([text1, text2]); }); }
方法二:使用正则表达式配合contains
如果不需要处理空格,也可以用正则表达式匹配两个字符串中的一个,通过contains断言实现精确匹配:
getText(text1, text2) { // ^和$确保完全匹配目标字符串,避免部分匹配的情况 const matchRegex = new RegExp(`^(${text1}|${text2})$`); cy.get('[data-cy="default-login-failed-label"]').contains(matchRegex); }
注意:如果text1或text2包含正则特殊字符(比如.、*等),需要先对这些字符进行转义,否则正则会匹配出错。
内容的提问来源于stack exchange,提问作者lenkubig
相关产品推荐
相关产品推荐

