错误超时等待Protractor在11秒后与页面同步

时间:2015-03-05 08:59:13

标签: angularjs selenium-webdriver timeout webdriver protractor

我的量角器测试有问题。我的角应用程序使用$ 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例程,以便我的测试不会超时?

任何帮助都将受到高度赞赏。

4 个答案:

答案 0 :(得分:12)

来自protractor's documentation

  

在执行任何操作之前,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