我有这个:
private isLogged(): boolean {
//check cookie here
let logged: boolean;
browser.manage().getCookies().then((cookies: IWebDriverOptionsCookie[]) => {
if (cookies.length == 0) {
console.log('Is Not Logged');
console.log('My cookies', cookies);
logged = false;
});
console.log('isLogged: ' , logged);
return logged;
}
当我运行它时,记录的是:
undefined
我进入了Not Not Logged和我的cookies里面。
我是不是错过了或者只是累了而且看不到简单的错误?
答案 0 :(得分:0)
当您调用isLogged()
函数并从中返回时,browser.manage().getCookies()
承诺尚未解决 - 因此,logged
的值从未设置过。
相反,让isLogged
返回一个承诺:
private isLogged(): boolean {
return browser.manage().getCookies().then(function (cookies) {
if (cookies.length == 0) {
console.log('Is Not Logged');
return false
} else {
console.log('Is Logged');
console.log('My cookies', cookies);
return true
}
});
}
并且,一旦需要值就解决:
isLogged().then(function (isLogged) {
console.log(isLogged);
});
为了更好地理解Protractor中的承诺,请参阅Promises and the Control Flow文档页面。