Javascript 取决于元素存在性的cypress条件代码逻辑

Javascript 取决于元素存在性的cypress条件代码逻辑,javascript,jquery,automation,cypress,exists,Javascript,Jquery,Automation,Cypress,Exists,我想根据元素的存在执行一些操作。比如: cy.get(A).should('not.exist').then(()=>{ //action 1 }) cy.get(A).should('exist').then(()=>{ //action 2 }) 我需要执行这两项检查 问题是我正在使用“应该”断言来执行此检查。如果元素存在,那么整个测试用例都会失败,我甚至没有进行第二次检查以执行操作2 cypress中是否有类似于软断言的东西,让我只检查元素是否存在,如果不存在,则不会使测试用

我想根据元素的存在执行一些操作。比如:

cy.get(A).should('not.exist').then(()=>{ //action 1 })
cy.get(A).should('exist').then(()=>{ //action 2 })
我需要执行这两项检查

问题是我正在使用“应该”断言来执行此检查。如果元素存在,那么整个测试用例都会失败,我甚至没有进行第二次检查以执行操作2


cypress中是否有类似于软断言的东西,让我只检查元素是否存在,如果不存在,则不会使测试用例失败???

请参阅

您不能在DOM上执行条件测试,除非您:

  • 没有异步JavaScript的服务器端呈现
  • 使用只进行同步渲染的客户端JavaScript
了解应用程序的工作原理至关重要,否则您将编写不可靠的测试

如果上述情况属实,则可以替换jQuery表达式

const exists = Cypress.$.('A').length > 0;
if (exists) { 
  //action 1 
} else {
  //action 2 
}
但如果异步加载“A”,上述操作将失败

一种方法是检查与“A”一起异步加载的另一个元素“B”

cy.get('B')      // 'B' is definitely loaded
  .then(() => {
    // since 'B' is present, we can test for 'A'
    const exists = Cypress.$.('A').length > 0;
    if (exists) { 
      //action 1 
    } else {
      //action 2 
    }
  })

请参阅

您不能在DOM上执行条件测试,除非您:

  • 没有异步JavaScript的服务器端呈现
  • 使用只进行同步渲染的客户端JavaScript
了解应用程序的工作原理至关重要,否则您将编写不可靠的测试

如果上述情况属实,则可以替换jQuery表达式

const exists = Cypress.$.('A').length > 0;
if (exists) { 
  //action 1 
} else {
  //action 2 
}
但如果异步加载“A”,上述操作将失败

一种方法是检查与“A”一起异步加载的另一个元素“B”

cy.get('B')      // 'B' is definitely loaded
  .then(() => {
    // since 'B' is present, we can test for 'A'
    const exists = Cypress.$.('A').length > 0;
    if (exists) { 
      //action 1 
    } else {
      //action 2 
    }
  })