量角器:失败:11秒后等待异步Angular任务完成而超时

时间:2018-09-07 09:47:08

标签: angular protractor e2e-testing angular-e2e

我遇到以下错误:

  

失败:等待异步Angular任务完成时超时   11秒后。这可能是因为当前页面不是   角度应用

我见过类似的问题,但似乎没有一个好的解决方案

使用Angular 4

我的设置是:
1)onBeforeLaunch:          我正在使用webdrive和chromedriver获取令牌进行身份验证

beforeLaunch(){

    const webdriver = require('selenium-webdriver');
    const chrome = require('selenium-webdriver/chrome');
    const path = require('chromedriver').path;
// do stuff like get token save it in variable
driver.quit();
}

2)onPrepare

browser.params.tokens =启动前的令牌

3)

it('should authenticate',() => {
       browser.get('/home?'+browser.params.token)
       expect(browser.getCurrentUrl()).toContain('home');
})

第3步出现错误。

PS:我尝试了多个选项,例如ignoreSync,waitforangularenabled,睡眠无济于事,有人可以指出我在这里做错了什么吗

1 个答案:

答案 0 :(得分:0)

这可能是由您的应用程序的特定结构引起的问题。因为默认情况下,量角器正在等待您的Angular应用程序,直到Angular进入所谓的'calm模式'

在执行任何操作之前,量角器将等待直到Angular应用程序中没有待处理的异步任务。这意味着所有超时和http请求都已完成。-这是“安静模式”

很多人遇到它,您可以在StackOverFlow上看到很多问题,很久以前,我也问过这个问题,然后我们与团队一起解决了这个问题。

首先,请阅读以了解基础: https://github.com/angular/protractor/blob/master/docs/timeouts.md

我将建议您从2个选项中选择一个。

  1. 在测试失败的地方放置waitForAngularEnabled(false); 在执行了一些操作(您将在测试时定义)之后,通过将同一行代码设为boolean true来返回它

    waitForAngularEnabled(true)

这意味着您命令量角器不要等待Angular停止工作并进一步执行其工作,然后在某些时候您知道Angular再次停止其工作,您将再次打开此参数,而量角器将在等待再次为Angular。 但是它可能不是唯一可能发生的地方,如果需要的话,您需要转到选项2

  1. 与您的开发人员进行讨论以更改应用程序,以便Protractor能够无障碍运行。 附言:这是我在团队中所做的事情,他们修复了一个应用程序,以使量角器测试能够顺利进行。