首页 > 解决方案 > 仅在元素仍然存在时进行测试

问题描述

我有一条通知消息,它​​会在保存文件时弹出,并且希望仅当它仍然存在时才关闭它,当我需要按下可能被此通知覆盖的下一个按钮时。

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

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?

标签: cypress

解决方案


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

  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

推荐阅读