Conditional statement in cypress

2019-08-22 18:58发布

问题:

I am trying to do a conditional statement on cypress to check if the login link in the header is Sign in or Account or a class and then click on it.

The if condition is not working.

cy.get('header').then((header) => { 

if (header.find('Sign in').length > 0) { 
    cy.contains('Sign In')
    .click({force:true})  

} else if (header.find('Account').length > 0) {
    cy.contains('Account')
    .click()

} else {
    cy.get('.navUser-item--account .navUser-action').click()

}

})

I expect if Sign in found then it will click else if the Account is available then it will click else it will check by the class.

[always doing the last else condition][1] [1]: https://i.stack.imgur.com/liEF9.png

[there is Account text and still it applied the last else condition][2] [2]: https://i.stack.imgur.com/sXYr8.png

Another code structure and now it always apply the first condition no matter what

回答1:

The following code worked for me.

cy.get('header').then(($a) => { 
        if ($a.text().includes('Account')) {
            cy.contains('Account')
            .click({force:true})
        } else if ($a.text().includes('Sign')) { 
            cy.contains('Sign In')
            .click({force:true})  
        } else {
            cy.get('.navUser-item--account .navUser-action').click({force:true})
        }
    })

Thank you for helping,



标签: cypress