簡體   English   中英

即使第一個“if”語句條件為真,Cypress(javascript)“else”塊也會執行

[英]Cypress (javascript) 'else' block executes even when the first 'if' statement condition is true

Cypress 和 JavaScript 的新手,請幫忙

我正在自動化測試用例,以檢查按鈕的啟用/禁用狀態,條件是一些元素的 'src' html 屬性值為 '/Client/images/iconNo.png'(按鈕將被禁用)和/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()條件。 我該如何解決這個問題?

或者

cypress 中還有其他方法可以檢查我上面的測試用例嗎?

請幫助並提出建議 非常感謝

Cypress 命令是異步的。 這意味着最好使用兩個單獨的 if 條件。 此外,您將同一元素包裝三次。 將 javascript 斷言與 cypress 命令結合使用會好得多。

例如,這個hasAttribute方法可以幫助您從 if 條件中刪除斷言。

請分享按鈕的內部 HTML,以便我可以進一步幫助您。

不能使用 Cypress 命令來執行if() ,命令總是返回一個不是 true/false 的對象。

使用 jQuery 代替命令

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

下面的代碼通過返回 else 塊中的值和條件滿足我的預期,按預期運行良好

else ($checkListIcon1.attr('src') === '/Client/images/iconNo.png')
        {
            cy.wait(7000)
            let buttonDisabled = verifyQIAPTab.clickRequestOrientation().should('be.disabled')
            return buttonDisabled;
        }
    })

感謝@Mihi 和@Syeda Aeimen Bukhari在這方面提供的廣泛幫助。 我能夠在你的幫助下解決這個問題

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM