2015-01-13 80 views
3

我对量角器相对来说比较新,而且我还没有能够使量角器等待页面在测试之前卸载。下面的例子:需要量角器在测试之前等待服务返回

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

睡眠语句不然而,工作所看到BU即使在成功登录和浏览器登录页面导航离开下面的测试总是失败:

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

谢谢!

回答

3

量角器动作(例如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); 
}); 

什么指望也被解开的承诺,这样你才能坚持对其基础价值。

+0

如果登录成功,我需要登录函数返回值在expect语句中解析为true,如果登录函数没有解析为false,则解析为false。我理解你的推理,并且解决了你提到的问题,但问题仍然存在。 – fortesl

+0

无视我之前的评论。您的解决方案完全按照给定的工作。谢谢! – fortesl

相关问题