当我在控制台中打印出 url 时,我得到了适当的 url。但是,当我稍后尝试使用 browser.get() 获取该 url 时,出现以下错误:
Failed: Parameter 'url' must be a string, not objectFailed: Parameter 'url' must be a string, not object
我真的不明白为什么会发生这种情况。在我看来:
A)。这是一个字符串,因为我可以打印它。
b). ...我本来想说“ promise 已解决”...但我实际上不太确定。所有 beforeAll promise 在开始 it 语句之前都得到解决吗?我该如何解决?
beforeAll(function(){
//some stuff
browser.waitForAngular();
createdItemUrl = browser.getCurrentUrl().then(function(url){
console.log('URL:' + url);
});
});
it('Keeps failing lololol', function(){
browser.get(createdItemUrl);
});
最佳答案
还有control flow在行动中。 getCurrentUrl()
是一个 promise ,如果您想重用实际的 URL 值,则必须解决该 promise :
var createdItemUrl;
beforeAll(function(){
//some stuff
browser.waitForAngular();
createdItemUrl = browser.getCurrentUrl();
});
it('Keeps failing lololol', function() {
// createdItemUrl is a promise
createdItemUrl.then(function (url) {
browser.get(url);
});
});
或者,您还可以添加阻塞 defer()
-> fulfill()
机制,使其等待/阻塞,直到 promise 得到解决,请参阅:
关于javascript - browser.get() 不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32163312/