нужен транспортир, чтобы дождаться возврата услуги перед тестированием

Я относительно новичок в транспортире, и мне не удалось заставить транспортир ждать выгрузки страницы перед тестированием. Пример ниже:

    //in loginPage object
    function login(email, password) {
        element(by.id('inputEmail')).sendKeys(email);
        element(by.id('inputPassword')).sendKeys(password);
        element(by.css('.btn.btn-primary')).click();
        browser.driver.sleep(4000);
        return !(element(by.binding('userCtrl.labels.signIn()')).isPresent());
    }

Однако оператор сна не работает, как видно из приведенного ниже теста, который всегда терпит неудачу, даже если вход в систему прошел успешно и браузер уходит со страницы входа:

        //in separate test page
        it('should allow a valid user to login', function() {
            expect(loginPage.login('[email protected]', '12345678')).toBe(true);
        });

Спасибо!


person fortesl    schedule 13.01.2015    source источник


Ответы (1)


Действия транспортира (например, isPresent()) возвращают обещание, а не базовое значение. т.е. это обещание: element(by.binding('userCtrl.labels.signIn()')).isPresent()

Прочтите этот https://github.com/angular/protractor/blob/master/docs/control-flow.md.

Это должно пройти:

function login(email, password) {
    element(by.id('inputEmail')).sendKeys(email);
    element(by.id('inputPassword')).sendKeys(password);
    element(by.css('.btn.btn-primary')).click();
    browser.driver.sleep(4000);
    return element(by.binding('userCtrl.labels.signIn()')).isPresent();
}

--

//in separate test page
it('should allow a valid user to login', function() {
    expect(loginPage.login('[email protected]', '12345678')).toBe(false);
});

Ожидание развернуло обещание, чтобы вы могли утверждать его базовое значение.

person hankduan    schedule 13.01.2015
comment
Мне нужно, чтобы возвращаемое значение функции входа в систему разрешалось в true в операторе expect, если вход в систему завершается успешно, и в false, если это не так. Я понимаю ваши рассуждения и решил проблему, о которой вы упомянули, но проблема остается. - person fortesl; 13.01.2015
comment
Не обращайте внимания на мой предыдущий комментарий. Ваше решение сработало именно так, как указано. Спасибо! - person fortesl; 13.01.2015