量角器做所有API函数真的返回承诺吗?

时间:2015-03-27 17:25:06

标签: angularjs testing promise protractor

当我运行此测试时:

browser.get('http://www.valid-site.com').then(function(msg){
    console.log(msg);
});

我希望打印1或者true表示操作成功,因为get()应该返回一个带有已解析值的promise。而是打印'null'。在API文档http://angular.github.io/protractor/#/api中,没有返回类型的指示。我很困惑哪些函数返回一个承诺,哪些函数没有。

1 个答案:

答案 0 :(得分:4)

不确定它是否会直接回答问题,但是,如果您查看browser.get() protractor's implementation(它包裹WebDriverJS的{​​{1}}),您会看到它返回:

driver.get()

由于执行的脚本没有return this.executeScript_( 'angular.resumeBootstrap(arguments[0]);', msg('resume bootstrap'), moduleNames); ,这就是您看到return已解决的原因。


但是,如果你研究一下browser.refresh() implementation,你会发现它会返回:

null

在这种情况下,执行的脚本返回return self.executeScript_( 'return window.location.href', 'Protractor.refresh() - getUrl').then(function(href) { return self.get(href, timeout); }); 值,您将在控制台上看到以下情况:

window.location.href

我想,您可以理解这个"Read the source, Luke" answer,因为,无论何时您不确定,都要查看来源。