仅在元素仍然存在时进行测试

时间:2019-09-19 05:23:28

标签: cypress

我有一条通知消息,该消息会在保存文件时弹出,并且仅当我需要按此通知可能涵盖的下一个按钮时,如果该文件仍然存在,则希望将其关闭。

到目前为止,这就是我试图有条件地关闭通知的方式

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 个答案:

答案 0 :(得分:1)

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

  1. 您弹出的窗口有时不会关闭。
  2. 如果弹出窗口没有关闭,您要关闭它。
  3. 如果弹出窗口已关闭,您要继续测试。

如果这是正确的,我们只需要修复步骤1和2,因为它们很特殊。像平常一样继续进行测试。

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

cy.get('body').then($body => {
  if ($body.find('.notification').length === 1) {
    cy.get('.notification-dismiss').click()
  }
})
// continu the test