代码之家  ›  专栏  ›  技术社区  ›  JD.

使用Cypress,如何测试不存在的元素?[重复]

  •  2
  • JD.  · 技术社区  · 6 年前

    对现有元素的测试与

    cy.get('.hello');
    

    如何断言这个元素不存在?

    1 回复  |  直到 6 年前
        1
  •  14
  •   Filip Hric    6 年前

    你很容易就走了

    cy
      .get('.hello')
      .should('not.exist');
    

    对我来说没问题。然而,您需要小心此类命令的时间安排。例如,如果在页面加载后立即使用此命令,它可能会给您一个假阳性,因为该元素尚未加载,因此在DOM中不存在。

    对我来说,最好的做法是做额外的工作 cy.get 我很确定有什么东西上了子弹 .should('be.visible') 当时,其他元素不存在。

    例如,如果您有一个接收输入的模式,然后在提交输入后消失,我会在该模式下的页面可见性上断言,如下所示:

    cy
      .get('.page-body');
    
    cy
      .get('.modal-trigger')
      .click();
    
    cy
      .get('.modal')
      .should('be.visible')
      .type('text')
      .get('.submit')
      .click();
    
    cy
      .get('.page-body')
      .should('be.visible');
    
    cy
      .get('.modal')
      .should('not.exist');
    

    因为Cypress会检查一个元素是否被其他元素覆盖, cy.get('.page-body') 应该可以在你的应用程序中为你提供一个关于当前情况的很好的参考。额外检查 cy.get('.modal').should('not.exist') 这只是确保一切按计划进行的另一种方式。有时这是有道理的,有时是矫枉过正。