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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了量角器:失败:超时等待异步角度任务在11秒后完成相关的知识,希望对你有一定的参考价值。

我收到以下错误:

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

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

致力于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这样的多个选项,睡觉什么都没有用,有人能指出我在这里做错了什么

答案

这可能是您的应用程序的特定结构导致的问题。因为默认情况下,Protular会等待你的Angular应用程序,直到Angular进入所谓的“冷静模式”

在执行任何操作之前,Protractor会等待您的Angular应用程序中没有挂起的异步任务。这意味着所有超时和http请求都已完成。 - 这是'冷静模式'

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

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

轮到我,我会建议你2个选项,你需要选择一个。

  1. 在测试失败的地方放waitForAngularEnabled(false);并在一些操作之后(你将在测试时定义)通过使用布尔值相同的代码行返回它 waitForAngularEnabled(true)

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

  1. 要与开发人员讨论改变应用程序的顺序,Protractor将能够毫无障碍地运行。 P.S这是我在我的团队中所做的事情,他们修复了一个应用程序,以便使Protractor测试顺利进行。

以上是关于量角器:失败:超时等待异步角度任务在11秒后完成的主要内容,如果未能解决你的问题,请参考以下文章

量角器 - 等待异步完成

使用 appium 执行量角器脚本时等待异步脚本结果超时

同步异步阻塞与非阻塞

使用带有 Angular2 和 Socket.io 的量角器运行 e2e 测试

在启动 Angular JS 之前等待异步任务完成

等待网络接口配置完成超时