Как обрабатывать исключения в Cypress аналогично тому, как мы это делали в селене - PullRequest
0 голосов
/ 23 апреля 2020

В селене мы можем обрабатывать исключения. Если в каком-либо тестовом сценарии возникнет какое-либо исключение, оно перейдет к следующему тестовому сценарию, который мы могли бы выполнить для селена. Но я в замешательстве, что, как мы можем сделать это в Cypress. Взяв приведенный ниже пример

 it('Test Case 1', function () {
        cy.visit('https://habitica.com/login')
        cy.get('form').find('input[id="usernameInput"]').click().type("username")
        cy.get('form').find('input[id="passwordInput"]').click().type("password")
        **cy.get('.btn-info').click()** 
        cy.get('.modal-dialog').find('button[class="btn btn-warning"]').click()
        cy.get('.start-day').find('button').click({force:true})
    })

 it('Test Case 2', function () {
        cy.visit('https://habitica.com/login')
        cy.get('form').find('input[id="usernameInput"]').click().type("username")
        cy.get('form').find('input[id="passwordInput"]').click().type("password")
        cy.get('.btn-info').click() 
        cy.get('.modal-dialog').find('button[class="btn btn-warning"]').click()
        cy.get('.start-day').find('button').click({force:true})
    })

Допустим, браузеру не удалось найти элемент click (выделен жирным шрифтом) в тестовом примере 1, затем он перейдет на тестовый случай 2.

Как мы можем это сделать в Cypress?

Пожалуйста, помогите мне в этом

Исключения, такие как Невозможность точного элемента или аналогичные другие.

Помимо этого примера, как мы можем обрабатывать исключения или ошибки.

Ответы [ 2 ]

1 голос
/ 24 апреля 2020

Хотя команда Cypress и говорит, что нам нужно как можно больше избегать условных тестов (и, возможно, необходимости изменить ваш подход). Однако в вашем случае вы можете включить условный тест:

cy.get('.btn-info').then((body) => {
 if (body.length > 0) { // continues if the element exists
    cy.get('.btn-info').click();
    cy.get('.modal-dialog').find('button[class="btn btn-warning"]').click()
    cy.get('.start-day').find('button').click({force:true})
 } // if the above condition is not met, then it skips this the commands and moves to the next test
});
0 голосов
/ 25 апреля 2020

Большое спасибо за ваш ответ. Пожалуйста, посмотрите на это. Я использовал твой код. ".btn-info" не существует, поэтому возникает исключение, и это нормально. но проблема в том, что не переходить к другому утверждению. Я имею в виду, что если оператор потерпел неудачу, то он должен выполняться еще, но это не так Почему это так?

      it('First Test Case', function() {

      cy.visit('http://pb.folio3.com:9000/admin/#/login');

      cy.get('.btn-info').then((body) => {    // **THIS ELEMENT NOT EXIST**
        if (body.length > 0) { // continues if the element exists
           cy.get('.btn-info').click();
           cy.get('.modal-dialog').find('button[class="btn btn-warning"]').click()
           cy.get('.start-day').find('button').click({force:true})
        } 
else
{
        **cy.visit('https://www.facebook.com/');**
}

       });


       it('Second Test Case', function() {
        cy.visit('https://www.google.com/');

      })
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...