(未捕获的异常)错误:ResizeObserver 循环已完成,但未传递通知

Meh*_*han 4 javascript uncaught-exception cypress

尝试获取元素并使用 cy.type() 命令时遇到的错误的 SS。

我试图获取一个元素并使用 Cypress 类型命令,但收到此错误:ResizeObserver 循环已完成,但未传递通知。这是我的代码:

`get signatureBtn() {
        return cy.get('#signature').type('userName')
    }`
Run Code Online (Sandbox Code Playgroud)

我在文件中使用以下代码support/e2e.js,但仍然收到错误。

    Cypress.on('uncaught:exception', (err, runnable) => {
    if (err.message.includes('ResizeObserver loop completed with undelivered notifications.')) {
        // ignore the error
        return false
    }
})
Run Code Online (Sandbox Code Playgroud)

有人可以告诉我为什么我会收到此错误吗?多谢!

Suc*_*UKR 8

未捕获的异常处理程序看起来不错,但看起来异常可能不是由 引起的get #signature,它只是在该命令期间发生。

由于未捕获的异常是从被测应用程序异步抛出的,因此它可能来自具有更改页面操作的先前命令。例如,可能是点击处理程序NextButton1导致了它(或者甚至是该操作之前的某些操作)。

要调试问题,请注释掉当前的处理程序。

然后在可疑行周围添加此代码,

const stub = cy.stub()
Cypress.on('uncaught:exception', (err, runnable) => {
  if (err.message.includes('ResizeObserver')) {
      stub()
      return false
  }
})

cy.get('#signature').type('userName')

cy.wrap(stub).should('have.been.called') 
Run Code Online (Sandbox Code Playgroud)

如果should('have.been.called')失败,则不是该行 - 在测试中向后移动并检查上一行

const stub = cy.stub()
Cypress.on('uncaught:exception', (err, runnable) => {
  if (err.message.includes('ResizeObserver')) {
      stub()
      return false
  }
})

cy.get('[data-test="NextButton"]').click()

cy.wrap(stub).should('have.been.called') 
Run Code Online (Sandbox Code Playgroud)

依此类推,直到找到出现故障的线路。

ResizeObserver 通常用于提供动画,因此一旦找到导致错误的行,请在测试之前添加可见性检查以允许页面稳定下来#signature

就像是

cy.get('[data-test="NextButton"]').click()

cy.get('some-element-that-appears-after-click')
  .should('be.visible')                          // wait for animation
Run Code Online (Sandbox Code Playgroud)