如何在赛普拉斯中使用逻辑或应该断言

How to use logical OR in Cypress should assertion

我有这个代码

cy.get(element).should('contain.text', search_word || search_word.toLowerCase())

我收到这个错误

expected <div.games__element__title.card-title.h5> to contain text Hot, but the text was Ultimate hot

如何使用 OR 运算符,以便断言元素的文本包含以大写或小写字母书写的搜索词?

一种实现您正在寻找的方法是在赛普拉斯中使用条件语句。我们将从元素中获取内部文本,然后检查文本中是否存在单词 hotHot ,并基于此我们将执行动作。

cy.get(element).invoke('text').then((text) => {
   if (text.includes('Hot')) {
      //Do Something
   }
   else if (text.includes('hot')) {
      //Do Something
   }
   else {
      //Do Something
   }
})

对于文本比较,我建议使用小写比较,而不是使用 OR 方法,通过在小写版本中比较预期文本和实际文本。这是一种更简洁的方法。

cy.get(element).invoke('text').should(text => {
  expect(text.toLowerCase()).to.contain(search_word.toLowerCase());
})

另一种选择是使用正则表达式

cy.get(element).invoke('text').should('match', /(h|H)ot/);