禁用按钮元素的 Cypress 条件语句

Dha*_*amo 3 cypress

尝试单击基于具有启用/禁用状态的另一个元素的按钮。由于某种原因,我禁用的检查代码不起作用,并且它总是以另一个语句结束(“找不到现有路由”),即使 UI 启用了选择按钮。

cy.get('voyage-suggested-routes')
  .find('button.selectButton')
  .then(($routes) => {
    if ($routes.is(":disabled")) {
      cy.log("No existing routes found...")
    } else {
      cy.log("Deleting......")
      cy.get('.delete-button').click({ force: true, multiple: true })
    }
  });
Run Code Online (Sandbox Code Playgroud)

这是 DOM:(默认有 3 个元素,如果未禁用,每个选择按钮都会有一个删除选项。)

<button class="selectButton" disabled route="1">
       <svg xmlns="http://www.w3.org/2000/svg" viewBox="..."></path></svg>
        SELECT
</button>
Run Code Online (Sandbox Code Playgroud)

也尝试了 jquery 方法,但结果相同。

var btnStatus = Cypress.$('.selectButton')
  .is(":disabled");

if (btnStatus == true) {
  cy.log("Deleting......")
  cy.get('.delete-button').click({ force: true, multiple: true })
} else {
  cy.log("No existing routes found...")
}
Run Code Online (Sandbox Code Playgroud)

我缺少什么?

更新1: Electron输入后,我的新代码是:

 cy.get('voyage-suggested-routes')
     .find('button.selectButton')
     .then(($routes) => {
         if ($routes.is(":disabled").length === 0) {
            cy.log("No existing routes found...")
         } else {
            cy.log("Deleting......")
            cy.get('.delete-button').click({ force: true, multiple: true })
         }
     });
Run Code Online (Sandbox Code Playgroud)

Pao*_*olo 5

来自文档jQuery .is()

描述:根据选择器、元素或 jQuery 对象检查当前匹配的元素集,如果这些元素中至少有一个与给定参数匹配,则返回 true。

因此,如果仅禁用一条路由,则删除不会继续。

尝试使用过滤器来查看是否有任何被禁用。

cy.get('voyage-suggested-routes')
  .find('button.selectButton')
  .then(($routes) => {
    const disabled = $routes.filter(":disabled")
    if ($routes.length === disabled.length) {
      cy.log("No existing routes found...")
    } else {
      cy.log("Deleting......")
      cy.get('.delete-button').click({ force: true, multiple: true })
    }
  })
Run Code Online (Sandbox Code Playgroud)