如何在Cypress的Should断言中实现字符串的OR条件判断?
解决Cypress多文本断言问题
你的写法失效是因为JavaScript里的||逻辑或运算符会直接返回第一个真值,也就是'Value exist in Queue',所以断言只会检查元素文本是否包含这个字符串,完全不会处理第二个选项。这里给你两种可行的解决方式:
方式一:自定义断言回调函数
用should的回调形式,直接在里面判断文本是否符合两个条件之一:
cy.get("Attribute").should(($element) => { const elementText = $element.text(); // 如果是完全匹配两个字符串中的一个,用下面的判断 expect(elementText).to.be.oneOf([ 'Value exist in Queue', "Value doesn't exist" ]); // 如果是文本包含其中任意一个子串,用这个判断 // expect(elementText).to.satisfy(text => // text.includes('Value exist in Queue') || text.includes("Value doesn't exist") // ); });
方式二:使用正则表达式
利用正则的分支匹配,直接匹配两个目标字符串:
// 匹配文本包含任意一个目标子串 cy.get("Attribute").should('include', /Value (exist in Queue|doesn't exist)/); // 如果是要求完全匹配其中一个,用精确匹配的正则 // cy.get("Attribute").should('match', /^(Value exist in Queue|Value doesn't exist)$/);
内容的提问来源于stack exchange,提问作者Muneeb
相关产品推荐
相关产品推荐

