我想使用Protractor端对端测试我们的角度2应用程序,但我仍然坚持使用以下消息:
"Failed: Timed out waiting for asynchronous Angular tasks to finish after 11 seconds."
我的conf文件。
exports.config = {
directConnect: true,
specs: ['spec.js'],
// For angular2 tests
useAllAngular2AppRoots: true,
}
Chrome已打开,网站也已打开,直到超时后才会发生任何事情。
当禁用同步时(使用browser.ignoreSynchronization = true;),它没问题。但我失去了#34;自动等待"功能,使用量角器的主要优点之一。
应用程序完全基于角度2.所以为什么这不起作用?
我们的开发人员告诉我,我们不是民意调查(根据Protractor documentation可能导致的原因之一)。 顺便说一句,我们正在使用websocket架构。我不知道是否有链接。
实际上,我根本不知道如何解决这个问题。
有人可以帮忙吗?
答案 0 :(得分:6)
你的猜测是正确的。当他们在angular2应用程序中运行任何未完成的任务时,会发生此错误。
是的,最常见的原因是当应用程序连续轮询$ timeout或$ http时,Protractor将无限期地等待并超时。但这也可能发生在App占用时间超过11秒
的情况下有关不同超时的详情,请参阅here
默认超时值为11秒。您可以通过调整config.js中的以下值来更改此设置,并尝试查看您是否仍然看到问题
/**
* The timeout in milliseconds for each script run on the browser. This
* should be longer than the maximum time your application needs to
* stabilize between tasks.
*/
allScriptsTimeout?: number;
答案 1 :(得分:5)
暂时启用browser.ignoreSynchronization修复它,如答案here中所述。
library(ggplot2)
all <- ggplot() +
geom_line(data = df1, aes(x = gain, y =
prob), color = "red") + ylim(c(0,1)) +
geom_line(data = df2, aes(x = loss, y =
prob), color = "blue") + ylim(c(0,1))
(抛出错误的代码)
browser.ignoreSynchronization = true;
答案 2 :(得分:2)
修改测试用例并放入
第一次点击后browser.waitForAngularEnabled(false);
应该有效。
但是,建议的方法可以覆盖conf.js
文件中的默认超时allScriptsTimeout: 110000