【问题标题】:cypress conditional code logic depending on existence of element赛普拉斯条件代码逻辑取决于元素的存在
【发布时间】:2021-07-29 15:04:21
【问题描述】:

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

cy.get(A).should('not.exist').then(()=>{ //action 1 })
cy.get(A).should('exist').then(()=>{ //action 2 })

而且我需要执行这两项检查。

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

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

【问题讨论】:

    标签: javascript jquery automation cypress exists


    【解决方案1】:

    请参阅Element existence的文档

    你不能对 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 
        }
      })
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-03-20
      • 1970-01-01
      • 2021-12-22
      • 2018-08-01
      • 1970-01-01
      • 2022-01-07
      • 1970-01-01
      相关资源
      最近更新 更多