reactjs Cypress while循环

mpbci0fu  于 11个月前  发布在  React
关注(0)|答案(1)|浏览(100)

我有一个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)
    }
  }
})

字符串

mzsu5hc0

mzsu5hc01#

您有一个要进行条件测试的选择器,如果没有找到则要执行一组操作。
一个通用的自定义命令应该能够做到这一点。使用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
  })

字符串

相关问题