【问题标题】:browser.get() Does Not Workbrowser.get() 不起作用
【发布时间】:2015-08-24 00:51:22
【问题描述】:

当我在控制台中打印出 url 时,我得到了适当的 url。但是,当我稍后尝试使用 browser.get() 获取该 url 时,我收到以下错误:

失败:参数“url”必须是字符串,而不是对象失败:参数“url”必须是字符串,而不是对象

我真的不明白为什么会这样。在我看来:
一个)。这是一个字符串,因为我可以打印它。
乙)。 ...我要说“承诺已解决”...但实际上我在这里不太确定。在开始 it 语句之前,所有的 beforeAll 承诺都得到解决了吗?我该如何解决?

beforeAll(function(){
    //some stuff 
    browser.waitForAngular();
    createdItemUrl = browser.getCurrentUrl().then(function(url){
        console.log('URL:' + url);
    });
});

it('Keeps failing lololol', function(){
    browser.get(createdItemUrl);
});

【问题讨论】:

    标签: javascript selenium-webdriver jasmine promise protractor


    【解决方案1】:

    control flow 仍在使用中。 getCurrentUrl() 是一个承诺,如果你想重用实际的 URL 值,则必须解决它:

    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 被解决,请参阅:

    【讨论】:

      【解决方案2】:

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

      【讨论】:

      • 感谢 Brine 的回答,由于解释,接受了 Alec 的回答,但您的回答也很有帮助。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-03-13
      相关资源
      最近更新 更多