我的量角器测试有问题。我的角应用程序使用$ timeout来连续从服务器轮询某些内容。不幸的是,当我运行我的测试时,这会导致以下错误消息:
There was a webdriver error: Error Timed out waiting for Protractor to synchronize with the page after 11 seconds. Please see https://github.com/angular/protrac
tor/blob/master/docs/faq.md
如何处理此类连续轮询超时?在我的情况下,将browser.ignoreSynchronization
设置为false
并不是一个好的解决方案(当我这样做时,我必须插入大量browser.sleep()
)
我的应用程序目前无法按照建议here从$ timeout切换到$ interval。增加超时也是不可能的(正如我所说,服务不断从服务器轮询某些东西)
是否有可能更改waitForAngular
例程,以便我的测试不会超时?
任何帮助都将受到高度赞赏。
答案 0 :(得分:12)
在执行任何操作之前,Protractor要求Angular等到 页面已同步。这意味着所有超时和http 请求已完成。如果您的应用程序不断轮询$ timeout 或$ http,它永远不会被注册为完全加载。你应该 使用$ interval服务(interval.js)进行轮询 连续(在Angular 1.2rc3中引入)。
答案 1 :(得分:2)
和你一样的船。
我们已经看过很多帖子讨论sleep()
,waitForAngular()
和browser.ignoreSynchronization
。
我同意你的意见,设置:ignoreSynchronization = true
不是一个好主意,因为它迫使我们手动等待每个异步过程。
有人建议使用sleep()
然后waitForAngular()
一起使用:
browser.sleep(10000);
browser.waitForAngular();
我真的不明白为什么有时waitForAngular()
无法等待页面同步完成,而且这等待#34;等待#34;代码确实有效。
请查看它是否适用于您的情况。
答案 2 :(得分:1)
在量角器配置文件中添加allScriptsTimeout:50000
exports.config = {
...
allScriptsTimeout: 50000,
...
};
或至少这解决了我的问题
答案 3 :(得分:0)
将allScriptsTimeout更改为大于11000的值,修复了我的问题
超时等待量角器...
在node_modules / protractor / lib / configParser.js中,更改了:
allScriptsTimeout: 25000