首页 > 解决方案 > 即使第一个“if”语句条件为真,赛普拉斯(javascript)“else”块也会执行

问题描述

赛普拉斯和 JavaScript 新手,请帮助

我正在自动化测试用例以检查按钮的启用/禁用状态,条件是一些元素具有值为 '/Client/images/iconNo.png' 的 'src' html 属性(按钮将被禁用)和/Client/images/iconYes.png(按钮将被启用)。

我使用 if 语句通过包装对象以获取值并使用 '.then()' 方法来检查上述条件,下面是 javascript 代码

cy.get('.eligibilitySuccessfulGrant > :nth-child(1) > .cursor')
  .then(($checkListIcon) =>{

    if(cy.wrap($checkListIcon).should('have.attr', 'src', '/Client/images/iconNo.png')){

        verifyQIAPTab.clickRequestOrientation().should('be.disabled')
    }
    else (cy.wrap($checkListIcon).should('have.attr', 'src', '/Client/images/iconYes.png'))
    {
         verifyQIAPTab.clickRequestOrientation().should('be.enabled').click()
}
})

问题:如果第一个“if”语句为真,那么它应该通过测试用例,但赛普拉斯抛出一个错误,即不满足 else 条件。

这是柏树错误: 以下是柏树错误:

柏树正在检查这种.should('be.enabled').click()情况。我该如何解决这个问题?

或者

赛普拉斯还有其他方法可以检查我的上述测试用例吗?

请帮助和建议 非常感谢提前

标签: javascriptif-statementuser-interfacecypress

解决方案


不能使用赛普拉斯命令来执行if(),命令总是返回一个非真/假的对象。

使用 jQuery 代替命令

if ($checkListIcon.attr('src') === '/Client/images/iconNo.png')

推荐阅读