gpt4 book ai didi

angularjs - 升级到 Angular 2 后 Protractor 测试停止工作

转载 作者:行者123 更新时间:2023-12-02 01:21:32 25 4
gpt4 key购买 nike

我有一个手动引导的 Angular 应用程序,其中编写了大量 Protractor 测试。 2016 年 6 月左右,测试有效,但不再有效。从那时起,发生了以下变化:

  • Angular 2 已经发布
  • 应用程序的登录部分已被重写。最初,登录页面根本没有使用 Angular。现在它使用 Angular 2。应用程序的其余部分仍然是 Angular 1。

如果我除了登录之外没有与应用程序交互,并运行单个测试(例如“expect(true).toBe(true)”),那么一切都会运行完成,不会生成任何错误消息。

如果我的测试自动化确实与应用交互,则会发生以下情况:

  • 如果我的 conf.js 文件包含“useAllAngular2AppRoots: true”,我会收到错误消息:“等待 Protractor 在 11 秒后与页面同步时超时。请参阅 https://github.com/angular/protractor/blob/master/docs/faq.md
  • 如果我的 conf.js 文件不包含“useAllAngular2AppRoots: true”,我会收到错误消息:“等待 Protractor 与页面同步时出错:“找不到元素的可测试性。”

无论哪种情况,自动化都会通过登录进入应用程序的 Angular1 部分。

我的问题是:

  1. 是否可以使用 Protractor 测试这种应用程序(Angular2 登录页面,Angular1 的所有其他应用程序)?
  2. 应该使用“useAllAngular2AppRoots: true”吗?
  3. 我收到的错误消息似乎没有指向我的测试代码中需要修复的特定区域。我怎样才能确定问题出在哪里?

编辑 2016 年 10 月 27 日在收到这个问题的第一个答案后,我试图确定到底是什么地方失败了。

我发现:

  • 在我的 conf.js 文件中设置 rootElement 没有效果。无论我是将它完全省略,特别是将其设置为“body”,还是将其设置为随机无意义的字符串,我都得到了相同的行为。
  • 按照给定的建议,我仍然收到错误消息“AfterAll Failed:WAITING Protractor 与页面同步时出错:“找不到元素的可测试性。”请注意,我没有尝试进行任何测试在我的 AfterAll 函数中,只需单击注销按钮
  • 如果我在测试的 beforeAll 函数中设置“browser.ignoreSynchronization=true”,我就可以进行与应用交互的调用,例如点击屏幕元素。没有这条线,这样的电话就没有任何效果。但是,我确定这不是我应该做的事情,或者我应该需要做的事情。
  • 即使使用“browser.ignoreSynchronization=true”,当我尝试进行特定于 Angular1 的调用时,例如尝试将元素与 by.repeater() 匹配时,我仍然会收到错误消息。这会发生在仍然用 Angular 1 编写的应用程序部分,因此使用 ng-repeat 而不是 ngFor。

这些附加信息是否可以进一步了解可能发生的情况以及我还可以尝试什么?

最佳答案

首先,您需要确保您使用的是最新的 Protractor (4.0.9) 和 zone.js >= 0.6.25。

然后,确保为包含混合 Angular 1 + 2 应用程序的每个页面将 browser.ng12Hybrid 设置为 true,即:

beforeEach(function () {
browser.ng12Hybrid = true;
browser.get('/somepage.html');
});

afterEach(function () {
browser.ng12Hybrid = false;
});

您还可以在 protractor's own test specs 中找到示例.

至于 useAllAngular2AppRoots: true,只有在您的应用程序完全迁移到 Angular 2 并且您已删除升级适配器后才应使用它,如 here 所述.

祝你的项目好运!

关于angularjs - 升级到 Angular 2 后 Protractor 测试停止工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39984718/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com