Rol*_*lis 8 selenium webdriver angular
我们使用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;
}
}
}
Run Code Online (Sandbox Code Playgroud)
我们最近测试的应用程序切换到使用Angular 2.上面的代码片段不等待Angular 2完成.有什么建议?
ale*_*cxe 13
对于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);
}
};
Run Code Online (Sandbox Code Playgroud)
取自Protractor源代码.量角器是围绕WebDriverJS javascript selenium绑定的包装器; 旨在测试AngularJS应用程序(不仅是,但最适合).
使用@alecxe 回答我最终遵循 javascript one liner 来检查所有 Angular Testabilities 是否稳定
window.getAllAngularTestabilities().findIndex(x=>!x.isStable()) === -1
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5717 次 |
| 最近记录: |