0

我收到以下错误:

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

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

3)

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

第三步给出错误。

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

4

1 回答 1

0

这可能是由您的应用程序的特定结构引起的问题。因为默认 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 能够无障碍运行。PS这是我在我的团队中所做的事情,他们修复了一个应用程序,以使量角器测试能够顺利进行。
于 2018-09-09T19:32:26.303 回答