赛普拉斯while循环

Tho*_*Byy 5 reactjs cypress

我有一个 API 可以返回一天中的时间,如果这些时间都被占用了,那么它不会返回任何时间。我想搬到第二天并尝试检查那里的时间,但我的测试卡住了并且会崩溃。

因此,如果没有时间,请转到第二天并等待响应并再次检查时间。如果有时间返回,我们可以退出循环。任何人都看到这是哪里出了问题?

谢谢

cy.get('body').then(($body) => {
  while (true) {
    if ($body.find('.time').length) {
      break
    } else {
      cy.get('.day').eq(4).click()
      cy.wait('@apiCheck2')
      cy.wait(500)
    }
  }
})
Run Code Online (Sandbox Code Playgroud)

Pao*_*olo 9

您有一个想要有条件地测试的选择器,以及一组在未找到时要执行的操作。

通用的自定义命令应该能够做到这一点。使用 jQuery 根据选择器和在尝试之间调用的函数来测试元素。

就像是:

Cypress.Command.add('findWithRetry', (selector, retryAction) {
  const $el = Cypress.$(selector)
  if ($el.length) {
    return cy.wrap($el)
  }
  retryAction()
  return cy.findWithRetry(selector, action)
})

cy.intercept(url).as('@apiCheck')

const retryAction = () => {
  cy.get('.day').eq(4).click()
  cy.wait('@apiCheck')
}

cy.findWithRetry('.time', retryAction)
  .then($timeslots => {
    // use your timeslots
  })
Run Code Online (Sandbox Code Playgroud)