Angularjs 使用带有ng升级的量角器
我正在将我的AngularJS(1.6)应用程序迁移到AngularJS(4),现在有一个混合应用程序,由NgUpgrade引导 然而,这似乎完全打破了我的量角器测试 失败:等待异步角度任务在11秒后完成时超时。这可能是因为当前页面不是角度应用程序。有关更多详细信息,请参阅常见问题解答: 等待带有定位器的元素时-定位器:按(css选择器、.toggle摘要按钮) 混合应用程序更改 应用程序似乎运行良好,AngularJS和Angular组件都按预期工作。我在引导过程中所做的更改如下: 1从html标记中删除了Angularjs 使用带有ng升级的量角器,angularjs,angular,protractor,ng-upgrade,Angularjs,Angular,Protractor,Ng Upgrade,我正在将我的AngularJS(1.6)应用程序迁移到AngularJS(4),现在有一个混合应用程序,由NgUpgrade引导 然而,这似乎完全打破了我的量角器测试 失败:等待异步角度任务在11秒后完成时超时。这可能是因为当前页面不是角度应用程序。有关更多详细信息,请参阅常见问题解答: 等待带有定位器的元素时-定位器:按(css选择器、.toggle摘要按钮) 混合应用程序更改 应用程序似乎运行良好,AngularJS和Angular组件都按预期工作。我在引导过程中所做的更改如下: 1从htm
ng应用程序:
2增加了一个AppModules(@NgModule)等
3使用NgUpgrade引导应用程序:
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { UpgradeModule } from '@angular/upgrade/static';
import { AppModule } from './app.module';
platformBrowserDynamic().bootstrapModule(AppModule).then(platformRef => {
const upgrade = platformRef.injector.get(UpgradeModule) as UpgradeModule;
upgrade.bootstrap(document.body, ['myapp'], {strictDi: true});
});
量角器测试
基于上述误差,问题似乎与量角器在等待角度测量时所做的任何操作有关。我有一个beforeach块,用于加载登录页面、填写详细信息并登录。奇怪的是,它仍然在打开页面并在用户名字段中输入文本,但随后它就再也无法继续了
我不明白为什么这会有什么不同,周围再多的变化似乎都没有帮助,所以任何指导都是最受欢迎的
我尝试过,但没有成功:
- 将“rootElement:'body'”添加到我的量角器配置文件
- 将“ng12Hybrid:true”添加到我的量角器配置文件中-我收到一条消息说,当它自动检测时,应该不再需要它了
- 将
allScriptsTimeout
设置从11000增加到60000,它仍然超时
- 关闭
waitForAngularEnabled
设置。这解决了登录字段的问题,但是我的http模拟没有一个工作,测试也没有失败
有趣的是,15个月前我问了一个完全相同的问题(+github),关于角度1到角度2:
没有任何解决方案,我返回到角度1。今天,我们决定再次尝试像你一样从角度1上升到角度4,并解决了你的问题,因为我们仍然有完全相同的问题
其实没那么好笑。。。我不明白为什么一个如此重要的特性会被这样分开。AngularJs应该被积极维护,因为Angular2+的突变!这有点令人失望(对于那些期待真正答案的人,我很抱歉,如果有更新,我会发布)
编辑:我去了React我想出了一个临时的方法来解决这个问题,用下面的逻辑覆盖waitForAngular
函数
onPrepare: function() {
var script = "var callback = arguments[arguments.length - 1];" +
"angular.element(document.querySelector(\"body\")).injector()"+
".get(\"$browser\").notifyWhenNoOutstandingRequests(callback)");
browser.waitForAngular = function() {
return browser.executeAsyncScript(script)
};
}
同时讨论这个问题并不是说这是一个量角器问题的解决方案,而是为了有选择地切换到另一个工具的阅读者的利益,我强烈推荐。由于这篇文章中的问题,我最终用Cypress替换了量角器,这太棒了!您好,我们最近也尝试从Angular1升级到5,并且遇到了完全相同的问题。我在互联网上到处搜索,似乎没有人找到这份工作。你对此有什么更新吗?@ZhenyiZhang我的应用程序现在是混合Angular.js/React.js,而不是Angular 2tanks,非常感谢你的回复。我会和NgUpgrade再斗争一段时间。这是如此令人沮丧,它不能很好地与量角器…有同样的问题,在2019年,从1.7升级到8.2,所有的测试都被打破