2017-10-04 128 views
0

在我的一個e2e測試中,我需要獲取當前的url並暫停測試的執行直到獲得它。這是我當前的代碼:Angular 2在量角器e2e測試中獲得當前Url

let publicUrl; 
browser.wait(()=>{ 
    browser.getCurrentUrl().then((url)=>{ 
    publicUrl = url; 
    }) 
}); 
console.log(publicUrl); 

publicUrl爲值已設置前console.log()線運行起來總是不確定的。我試過的browser.wait()browser.getCurrentUrl()但沒有成功多種組合:

let publicUrl; 

browser.wait(()=>{ 
    return browser.getCurrentUrl() 
}).then((url) => { 
    publicUrl = url; 
}); 

console.log(publicUrl); 

我敢肯定這一定是可能的,所以不知道我做錯了。

回答

0

任何使用。然後()是一個asynchronous函數。您的console.log()及其在您的代碼中的當前位置是synchronous,這意味着它將在.getCurrentUrl()將返回值之前執行。您的代碼必須如下所示:

let publicUrl; 
browser.wait(()=>{ 
    browser.getCurrentUrl().then((url)=>{ 
    publicUrl = url; 
    return console.log(publicUrl); 
    }); 
}); 

希望這有助於您!

0

GoLGo13是對的。 我想再添加一行,如果你知道,你的預期網址,然後 你可以等待特定的網址。

首先在public url中定義你期望的Url;

let publicUrl=yourExpectedUrl; 
browser.wait(()=>{ 
    browser.getCurrentUrl().then((url)=>{ 
    return url==publicUrl; 
    }) 
}); 
相關問題