无法实现对Selenium的waitForAngular

时间:2016-01-27 16:27:08

标签: java angularjs selenium protractor

我们在框架中使用Selenium WebDriver和Java。我们需要添加waitForAngular()方法。起初我找到了Protractor的源代码:

var waitForAngular = function(rootSelector, callback) {
    var el = document.querySelector(rootSelector);
    try {
        if (window.getAngularTestability) {
            window.getAngularTestability(el).whenStable(callback);
            return;
        }
        if (!window.angular) {
            throw new Error('window.angular is undefined. This could be either ' +
                'because this is a non-angular page or because your test involves ' +
                'client-side navigation, which can interfere with Protractor\'s ' +
                'bootstrapping. See http://git.io/v4gXM for details');
        }
        if (angular.getTestability) {
            angular.getTestability(el).whenStable(callback);
        } else {
            if (!angular.element(el).injector()) {
                throw new Error('root element (' + rootSelector + ') has no injector.' +
                    ' this may mean it is not inside ng-app.');
            }
            angular.element(el).injector().get('$browser').
            notifyWhenNoOutstandingRequests(callback);
        }
    } catch (err) {
        callback(err.message);
    }
};
 var rootSelector = arguments[0];
 var callback = arguments[1];
 waitForAngular(rootSelector, callback);

我使用JavaScriptExecutor驱动程序将其注入我的框架中:

public void waitForAngular() {
    this.jsExecutor.executeAsyncScript(
        waitForAngularJSScript, rootElement);
}

作为rootElement,我尝试使用" body"," [ng-app]"。但它不起作用。我有例外

  

错误:ng:test   找不到可测试性   找不到getTestability元素参数的注入器

Link to description of exception

中的:

angular.getTestability(el).whenStable(callback);

我在Angular中并不强大,所以也许你可以帮助我找到我能解决的问题。

0 个答案:

没有答案