我们可以用 cypress 测试元素文本是否包含 text_ A 或 text_B 吗?

KoK*_*oKa 5 javascript automated-tests cypress

只是想知道是否有一种方法可以使用 cypress测试元素是否包含text_Atext_B。例如,我有一个元素填充了从 API 请求返回的错误,我想检查错误消息是否包含text_Atext_B。尝试了以下代码,但它仅在存在text_A时才有效,并且在返回text_B时失败。我没有收到任何来自 cypress 的无效语法错误,任何帮助将不胜感激。

 cy.get('body').then((body) => { 
     if (body.find('#request-error').length > 0) { 
         cy.get('#request-error').then((el)=> {
              assert.include(el.text(), ('text_A' || 'text_B')); 
         });
     } else {
         // DO SOMETHING ELSE
     }
 });
Run Code Online (Sandbox Code Playgroud)

Cor*_*son 8

本质上,您有一个可能的错误消息数组,因此您可以测试该数组中是否存在该元素的文本。

expect(['text_A', 'text_B']).to.include(el.text())
Run Code Online (Sandbox Code Playgroud)

另一个读起来更好的选择是使用.oneOf

expect(el.text()).to.be.oneOf(['text_A', 'text_B']);
Run Code Online (Sandbox Code Playgroud)

https://docs.cypress.io/guides/references/assertions.html#BDD-Assertions