我正在将我的 AngularJS (1.6) 应用程序迁移到 Angular (4),现在有一个混合应用程序,由 NgUpgrade 引导。
但是,这似乎完全破坏了我的量角器测试。
失败:等待异步 Angular 任务在 11 秒后完成超时。这可能是因为当前页面不是 Angular 应用程序。有关更多详细信息,请参阅常见问题解答:https ://github.com/angular/protractor/blob/master/docs/timeouts.md#waiting-for-angular
在等待带有定位器的元素时 - 定位器:By(css selector, .toggle-summary-button)
混合应用程序更改
该应用程序似乎运行良好,AngularJS 和 Angular 组件都按预期工作。我在引导过程中所做的更改是:
ng-app
1从 html 标记中删除:
<html lang="en" *ng-app="myapp">
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});
});
量角器测试
基于上述错误,问题似乎与 Protractor 在等待 Angular 时所做的任何事情有关。我有一个 beforeEach 块,它加载登录页面,填写详细信息并登录。奇怪的是它仍在打开页面并在用户名字段中输入文本,但随后它无法继续前进。
我不明白为什么这有什么不同,而且周围的任何改变似乎都没有帮助,所以任何指导都将受到欢迎!
我试过了,没有成功:
- 将“rootElement:'body'”添加到我的量角器配置文件中
- 在我的量角器配置文件中添加“ng12Hybrid:true” - 我收到一条消息,说它不再需要它,因为它会自动检测到。
- 将
allScriptsTimeout
设置从 11000 增加到 60000 并且仍然超时。 - 关闭
waitForAngularEnabled
设置。这解决了登录字段的问题,但是我的 http 模拟都不起作用并且测试失败。