使用Cypress中的catch块进行错误处理

时间:2019-06-24 20:44:39

标签: cypress

我正在尝试处理Cypress中的错误,但Cypress应用抛出错误

cy.get('button[name="continue"]',{timeout: 30000})
  .catch((err) => {
    cy.console.log("error caught");
  })

我得到的错误:

  

TypeError:cy.get(...)。catch不是函数

1 个答案:

答案 0 :(得分:1)

tl; dr

Cypress没有.catch命令,错误消息清楚地表明了这一点。

赛普拉斯中的异常处理

catchError明确指出:

  

以下代码无效,您无法向赛普拉斯命令添加错误处理。该代码仅用于演示目的。

     
cy.get('button').contains('hello')
  .catch((err) => {
    // oh no the button wasn't found
    // (or something else failed)
    cy.get('somethingElse').click()
  })

他们故意忽略了这一点,并在文档中详细解释了为什么您不应该这样做。

如果确实需要,您可以捕获未捕获的异常,只需尝试documentation on error recovery的建议:

it('is doing something very important', function (done) {
  // this event will automatically be unbound when this
  // test ends because it's attached to 'cy'
  cy.on('uncaught:exception', (err, runnable) => {
    expect(err.message).to.include('something about the error')

    // using mocha's async done callback to finish
    // this test so we prove that an uncaught exception
    // was thrown
    done()

    // return false to prevent the error from
    // failing this test
    return false
  })

  // assume this causes an error
  cy.get('button').click()
})