我遇到以下错误:
失败:等待异步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,睡眠无济于事,有人可以指出我在这里做错了什么吗
答案 0 :(得分:0)
这可能是由您的应用程序的特定结构引起的问题。因为默认情况下,量角器正在等待您的Angular应用程序,直到Angular进入所谓的'calm模式'
在执行任何操作之前,量角器将等待直到Angular应用程序中没有待处理的异步任务。这意味着所有超时和http请求都已完成。-这是“安静模式”
很多人遇到它,您可以在StackOverFlow上看到很多问题,很久以前,我也问过这个问题,然后我们与团队一起解决了这个问题。
首先,请阅读以了解基础: https://github.com/angular/protractor/blob/master/docs/timeouts.md
我将建议您从2个选项中选择一个。
在测试失败的地方放置waitForAngularEnabled(false);
在执行了一些操作(您将在测试时定义)之后,通过将同一行代码设为boolean true来返回它
waitForAngularEnabled(true)
这意味着您命令量角器不要等待Angular停止工作并进一步执行其工作,然后在某些时候您知道Angular再次停止其工作,您将再次打开此参数,而量角器将在等待再次为Angular。 但是它可能不是唯一可能发生的地方,如果需要的话,您需要转到选项2