【问题标题】:Protractor : Failed: Timed out waiting for asynchronous Angular tasks to finish after 11 seconds量角器:失败:等待异步 Angular 任务在 11 秒后完成超时
【发布时间】:2018-09-07 09:47:07
【问题描述】:

我遇到以下错误:

失败:等待异步 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) 准备工作

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

3)

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

在第 3 步给出错误。

PS:我尝试了多个选项,例如 ignoreSync、waitforangularenabled、sleep 没有任何效果有人可以指出我在这里做错了什么

【问题讨论】:

  • 为什么在 beforeLaunch 中使用driver.quit()
  • 在我使用提到的 lib 登录无头 chrome 之前,所以一旦我的工作完成,获取令牌,我将关闭它。
  • 那么你看到浏览器启动并打开页面了吗?
  • 是的,只有当它尝试运行“它”时,一切都按预期工作,它失败了
  • 我想browser.get('/home?'+browser.params.token) 行以分号结尾?

标签: angular protractor e2e-testing angular-e2e


【解决方案1】:

这可能是由您的应用程序的特定结构引起的问题。因为默认 Protractor 正在等待您的 Angular 应用程序,直到 Angular 进入所谓的 '平静模式'

在执行任何操作之前,Protractor 会一直等待,直到您的 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 能够无障碍运行。 P.S 这是我在我的团队中制作的东西,他们修复了一个应用程序,以使 Protractor 测试能够顺利进行。

【讨论】:

    猜你喜欢
    • 2017-10-30
    • 1970-01-01
    • 2017-05-08
    • 1970-01-01
    • 2017-12-30
    • 2018-09-14
    • 2017-12-18
    • 2017-02-02
    • 1970-01-01
    相关资源
    最近更新 更多