当我在控制台中打印出网址时,我会获得相应的网址。但是,当我稍后尝试使用browser.get()获取该URL时,我收到以下错误:
失败:参数'url'必须是字符串,而不是objectFailed:参数'url'必须是字符串,而不是对象
我真的不明白为什么会这样。对我来说似乎是:
一个)。这是一个字符串,因为我可以打印它
B)。 ......我打算说“承诺得到解决”......但我实际上并不那么确定。在开始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);
});
答案 0 :(得分:2)
仍然有control flow在行动。如果您想重用实际的URL值,则getCurrentUrl()
是必须解决的承诺:
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()
机制使其等待/阻止,直到承诺得到解决,请参阅:
答案 1 :(得分:1)
createdItemUrl
是一个对象。在then
内,url
是一个字符串。试试这种方式:
var createdItemUrl;
beforeAll(function(){
//some stuff
browser.waitForAngular();
browser.getCurrentUrl().then(function(url) {
createdItemUrl = url;
});
});
it('Keeps failing lololol', function(){
browser.get(createdItemUrl);
});