赛普拉斯期望元素包含一个字符串或另一个字符串

时间:2019-09-30 23:19:19

标签: javascript cypress

我正在尝试做一些赛普拉斯的断言,以查看它是否包含一个或另一个字符串。它可以是英语或西班牙语,因此任何一个都应该通过测试。

cy.get(el).should('contain', 'submit').or('contain', 'enviar')

显然不起作用。

  const runout = ['submit', 'enviar']
  const el = '[data-test=btn-submit]'
  function checkArray(arr, el) {
    for(let i = 0; i < arr.length; i++) {
      if(cy.get(el).contains(arr[i])) {
        return true
      } else {
        if (i === arr.length) {
          return false
        }
      }
    }
  }
  cy.expect(checkArray(runout,el)).to.be.true

测试失败,仍然检查两个字符串。

2 个答案:

答案 0 :(得分:2)

您可以尝试使用正则表达式,请参见contains#Regular-Expression

有关某些格式,请参见此问题Regular expression containing one word or another

我认为这样简单,

Type1

首先在Regex101或类似的在线测试仪上进行实验。

也许用

cy.get(el).contains(/submit|enviar/g)

答案 1 :(得分:0)

也许这种方式可以检查“或”状态。 我使用Google主页进行测试,并尝试在测试中找到“ Google搜索”或“非Google搜索”。 如果找不到两者都会抛出错误。

describe('check if contains one of the text', function() 
{
it('Test google search button on google homepage',()=> {
    let url = 'https://www.google.com/';
    let word1 = 'Not Google Search';
    let word2 = 'Google Search';
    cy.visit(url);
    cy.get('input[value="Google Search"]').invoke('attr','value').then((text)=>{

        if (text=== word1) {
            console.log('found google not search');
        }
        else if (text === word2) {
            console.log('found google search');
        }
        else {
            console.log(text);
            throw ("cannot find any of them");
        }

    })
})
})

在上述word2的测试用例中,找到了它,因此它在控制台中记录了“找到google搜索”。

enter image description here