Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angularjs/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/15.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Angularjs 使用带有ng升级的量角器_Angularjs_Angular_Protractor_Ng Upgrade - Fatal编程技术网

Angularjs 使用带有ng升级的量角器

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

我正在将我的AngularJS(1.6)应用程序迁移到AngularJS(4),现在有一个混合应用程序,由NgUpgrade引导

然而,这似乎完全打破了我的量角器测试

失败:等待异步角度任务在11秒后完成时超时。这可能是因为当前页面不是角度应用程序。有关更多详细信息,请参阅常见问题解答:

等待带有定位器的元素时-定位器:按(css选择器、.toggle摘要按钮)

混合应用程序更改

应用程序似乎运行良好,AngularJS和Angular组件都按预期工作。我在引导过程中所做的更改如下:

1从html标记中删除了
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,所有的测试都被打破