赛普拉斯条件语句取决于输入字段是否被禁用

Cypress conditional statement depending on whether the input field is disabled or not

我在页面上有一些输入字段。它们可以被禁用或不被禁用。所以我需要在此字段中键入文本,以防万一它未被禁用。我尝试这样做:

          fillPickUpTown(pickUpTown: string) {
            cy.get(`[data-testid="pick-up-town"]`)
              .should('not.be.disabled')
              .then(() => {
                cy.get(`[data-testid="pick-up-town"]`).type(pickUpTown);
              });
          }

但是我的测试失败了,错误是“10000 毫秒后重试超时:预期‘’不是 'disabled'”。 我如何才能在该字段未被禁用时键入它,而在它被禁用时什么也不做?

去掉should,这只会在一个条件下成功。相反,在 then()

内部测试
fillPickUpTown(pickUpTown: string) {
  cy.get(`[data-testid="pick-up-town"]`)
    .then($el => {
      if (!$el.is(':disabled')) {
         cy.wrap($el).type(pickUpTown);
      }
    });
  }

您可以使用JQuery:enabled检查并实施If-Else。

fillPickUpTown(pickUpTown: string) {
  cy.get(`[data-testid="pick-up-town"]`).then(($ele) => {
    if ($ele.is(":enabled")) {
      cy.get(`[data-testid="pick-up-town"]`).type(pickUpTown)
    }
  })
}