从非角度页面导航到角度页面时,遇到量角器同步错误

时间:2019-08-16 07:30:46

标签: protractor protractor-net

我正在为我的angular7应用程序(Windows 10,Chrome)创建e2e测试。在我的应用程序中,首先出现一个非角度页面,当我输入用户名和密码时,出现角度页面。在导航到有角页面之前,我曾尝试将browser.ignoresynchronization = true用于非角页面和browser.ignoresynchronization = false。尽管如此,量角器在到达角度页面时就立即抛出。

我在browser.ignoresynchronization = true下的protractor.conf文件中尝试过onPrepare(),然后在登录后和出现角度页面之前将此标志再次设置为false。仍然出现量角器同步错误。

我还尝试使用browser.waitForAngularEnabled(false)代替ignoresynchronization,但仍然没有成功。

1 个答案:

答案 0 :(得分:0)

欢迎您!

在获得细节之前:

量角器支持有角和无角页面。如已经完成的操作,指定何时希望量角器等待角度加载,以及何时不应该。

我们还有一个同时包含有角页面和无角页面的应用程序。现在已经有一段时间使用量角器进行E2E测试了。在我们的案例中,目的是最终在整个应用程序中迁移到Angular。

也就是说,我们使用了browser.ignoreSynchronization(现在不推荐使用)和browser.waitForAngularEnabled()来处理低角度页面。默认情况下,配置为非角度。但是,一旦页面迁移到有角度的页面,事情就变得很困难。我们必须做点什么。

对我们有用的解决方案:

  • 什么也不做,让量角器通常相信它是一种有角度的应用。这很有意义,因为大多数页面要么完全成角度,要么页面的某些部分使用角度。在您的情况下,找到有角度的页面与无角度页面的数量。相应地设置量角器配置参数,以使大多数都可以使用。
  • 对于非角度页面,我们将该设置移至PageObjects,因为从逻辑上讲,这就是保存该信息(即角度信息还是非角度信息)的正确位置。
  • 规格开始与页面对象配合使用,除了单击链接打开新标签页/窗口/弹出窗口的位置以外。在这些地方,我们让Specs决定禁用然后启用后角加载标志。到目前为止,效果很好

具体来说:

根据我们的经验,请谨慎地在it块的开头和结尾使用该标志。也就是说:在it块的开始处调用browser.waitForAngularEnabled(true/false),然后在同一it块的末尾将其还原。随意使它的块尽可能小以处理此问题。总而言之,请确保it块类似于

it('should do', function(){
  browser.waitForAngularEnabled(false/true)
  step1 here
  step2 here
  browser.waitForAngularEnabled(true/false)
})

该问题未包含错误详细信息,但是这种方法应该可以作为量角器(准确地说是JavaScript引擎)在整个it块中运行。

也不清楚您是否使用量角器承诺管理器。如果上述方法不能解决问题,请进行更新。

祝一切顺利...