我们使用Selenium WebDriver自动化基于UI的测试.我们的挑战之一是检测页面何时真正完成加载,而Angular 1在这方面也是一个挑战.我们最终执行这段代码专门检测Angular 1是否完成:
if(typeof window.angular !== \"undefined\") { var injector = window.angular.element(\"*[ng-app]\").eq(0).injector(); if(injector) { var $rootScope = injector.get(\"$rootScope\"); var $http = injector.get(\"$http\"); if($rootScope.$$phase === \"$apply\" || $rootScope.$$phase === \"$digest\" || $http.pendingRequests.length !== 0) { return false; } } }
我们最近测试的应用程序切换到使用Angular 2.上面的代码片段不等待Angular 2完成.有什么建议么?
对于Angular 2,您应该等待所有Angular 2应用程序的稳定性为
“testabilities”:
functions.waitForAllAngular2 = function(callback) { try { var testabilities = window.getAllAngularTestabilities(); var count = testabilities.length; var decrement = function() { count--; if (count === 0) { callback(); } }; testabilities.forEach(function(testability) { testability.whenStable(decrement); }); } catch (err) { callback(err.message); } };
量角器是围绕WebDriverJS javascript selenium绑定的包装器;旨在测试AngularJS应用程序(不仅是,但最适合).