Условный оператор в cypress

#cypress

#cypress

Вопрос:

Я пытаюсь выполнить условный оператор в cypress, чтобы проверить, является ли ссылка для входа в заголовке входом, учетной записью или классом, а затем щелкнуть по ней.

Условие if не работает.

 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()

}
  

})

Я ожидаю, что если вход найден, то он нажмет else, если учетная запись доступна, то он нажмет else, который будет проверен классом.

[всегда выполняется последнее условие else][1] [1]: https://i.stack.imgur.com/liEF9.png

[есть текст учетной записи, и все еще в нем применено последнее условие else][2] [2]: https://i.stack.imgur.com/sXYr8.png

Другая структура кода, и теперь в нем всегда применяется первое условие, несмотря ни на что

Комментарии:

1. Что происходит, чего вы не ожидаете? и читали ли вы документы по условному тестированию? on.cypress.io/conditional-testing#Element-existence

2. я не понял, что вы подразумеваете под «Что происходит, чего вы не ожидаете»? И Да, я действительно прошел через документ об условном тестировании

3. Вы получаете сообщение об ошибке? Что не работает с предоставленным вами кодом?

4. Следующее, если X, то Y, иначе, если A, то B, иначе Z мое условие — A, и оно должно выполняться B, но независимо от того, какое условие оно всегда выполняет Z

5. @ZachBloomquist я добавил несколько снимков экрана и даже изменил код. спасибо, что уделили время, чтобы помочь мне

Ответ №1:

Следующий код сработал для меня.

 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})
        }
    })
  

Спасибо за помощь,

Ответ №2:

 cy.get ('button'). then ($button) => {
if ($button.text()). includes ("Import project')){
cy.contains ('Import project'). click () wait (2000);
            }
else 
{
cy.contains('Replace existing project').click({force:true})
cy.get('.bp3-intent-danger').click();
            }
            
    })
I am trying in same way but it's not working for me