Cypress 仅当元件仍然存在时进行测试

Cypress 仅当元件仍然存在时进行测试,cypress,Cypress,我在保存文件时会弹出一条通知消息,只有当我需要按下此通知可能包含的“下一步”按钮时,该消息仍然存在,我才希望将其关闭 到目前为止,我一直试图有条件地关闭通知 Cypress.Commands.add('notificationClose', () => { if (cy.get('.notification').should('be.visible')) { console.log('CLOSE ME'); cy.get('.notification-dismiss')

我在保存文件时会弹出一条通知消息,只有当我需要按下此通知可能包含的“下一步”按钮时,该消息仍然存在,我才希望将其关闭

到目前为止,我一直试图有条件地关闭通知

Cypress.Commands.add('notificationClose', () => {
  if (cy.get('.notification').should('be.visible')) {
    console.log('CLOSE ME');
    cy.get('.notification-dismiss').click({mulitple: true});
  }else{
    console.log('ALREADY GONE');
  }
});
我还尝试了在这里找到的jQuery解决方案

Cypress.Commands.add('notificationClose', () => {
  if (Cypress.$('.notifications-wrapper') == true) {
    cy.get('.notification-dismiss').click({mulitple: true});
  }
});
我只在需要单击后续按钮之前立即使用它,因此通知可能会自行关闭

该元素仅在保存文件后临时附加到DOM


如何询问此元素是否附加到DOM?

我不完全确定是否理解您的问题。但这就是我想你的意思:

您有一个有时不会关闭的弹出窗口。 如果弹出窗口未关闭,您希望将其关闭。 如果弹出窗口关闭,您希望继续测试。 如果这是正确的,我们只需要修复步骤1和2,因为它们是特殊的。继续测试就像你平时做的一样

要获得行为,需要获取元素并断言它是否存在。您可以使用以下代码执行此操作:

得到“body”。然后$body=>{ 如果$body.find'.notification'.length==1{ cy.get'.通知解除'.单击 } } //继续测试
我认为你的方法是正确的,明白吗