web-dev-qa-db-ja.com

サイプレスは1つの文字列または別の文字列を含む要素を期待しています

私はそれが1つまたは別の文字列を含むかどうかを見るためにいくつかのサイプレスアサーションをやろうとしています。それは英語またはスペイン語であり得るので、どちらかがテストに合格するべきです。

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
 _

テストに失敗し、まだ両方の文字列をチェックします。

5
nickel

多分このようにして「または」をチェックすることができます。私は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");
        }

    })
})
})
 _

テストケースでは、ワード2が見つかりましたので、コンソールに 'found Google Search'をログに記録しました。

enter image description here

0
Pigbrainflower