$ browser.notifyWhenNoOutstandingRequests不考虑控制器功能

时间:2013-11-11 03:09:40

标签: javascript angularjs selenium-webdriver automated-tests phantomjs

我们正在使用phantomjs测试角度webapp。

控制器代码如下所示:

angular.module('module' ['dependency']).
    controller('controller',function ($scope, Model) {
        // blah-blah-blah
        Model.list() // calls $http.get
            .then(); // yadda-yadda-yadda
    });

Backend在java中,所以为了测试整个应用程序,我们使用Selenium Webdriver和PhantomJS。 我使用这个片段来检查角度是否已经完成处理它的指令(从protractor源代码中获取)。

var app = angular.element(document.querySelector('#ng-app'));
var $browser = app.injector().get('$browser');
$browser.notifyWhenNoOutstandingRequests(function () {
    // callback
});

它工作正常 - 在大多数情况下,它确实可以检测角度处理请求。

问题是有时我的回调似乎在控制器执行之前就会触发。在我注意到这种行为的所有情况下,它都是路线变化。 我已经尝试将alert('');插入控制器的不同部分以找到它。

所以,问题是 - 我怎样才能在执行控制器功能后执行我的等待代码段

1 个答案:

答案 0 :(得分:2)

Per the GitHub discussion,你提到的问题是PhantomJS特有的。其他环境似乎很好。

警告:我不使用Phantom,这个谈话是1年(截至2014年12月) - 所以这可能不再是一个问题。