在测试之前需要量角器等待 return 的服务

need protractor to wait for a service to return prior to testing

我对量角器比较陌生,我无法让量角器在测试前等待页面卸载。示例如下:

    //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());
    }

然而,sleep 语句不起作用,如下所示,即使登录成功并且浏览器离开登录页面,下面的测试也总是失败:

        //in separate test page
        it('should allow a valid user to login', function() {
            expect(loginPage.login('tiratf@gmail.com', '12345678')).toBe(true);
        });

谢谢!

Protractor 动作(例如 isPresent())return 一个承诺,而不是潜在的价值。 即这是一个承诺: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('tiratf@gmail.com', '12345678')).toBe(false);
});

expect 所做的是解开承诺,以便您可以断言其潜在价值。