browser.get()不起作用

时间:2015-08-23 04:57:08

标签: javascript selenium-webdriver jasmine promise protractor

当我在控制台中打印出网址时,我会获得相应的网址。但是,当我稍后尝试使用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);
});

2 个答案:

答案 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);
});