错误超时等待量角器在 11 秒后与页面同步
Posted
技术标签:
【中文标题】错误超时等待量角器在 11 秒后与页面同步【英文标题】:Error Timed out waiting for Protractor to synchronize with the page after 11 seconds 【发布时间】:2015-05-06 13:49:36 【问题描述】:我的量角器测试有问题。我的 Angular 应用程序使用 $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
例程以使我的测试不会超时?
我们将不胜感激任何帮助。
【问题讨论】:
【参考方案1】:来自protractor's documentation:
在执行任何操作之前,Protractor 会要求 Angular 等到 页面已同步。这意味着所有超时和 http 请求完成。如果您的应用程序不断轮询 $timeout 或 $http,它永远不会被注册为完全加载。你应该 使用 $interval 服务 (interval.js) 进行任何轮询 连续(在 Angular 1.2rc3 中引入)。
【讨论】:
没有其他方法可以解决这个问题吗?【参考方案2】:与你同船。
我们看到很多帖子讨论sleep()
、waitForAngular()
和browser.ignoreSynchronization
。
我同意你的观点,设置:ignoreSynchronization = true
不是一个好主意,因为它迫使我们手动等待每个异步进程。
有人建议像这样一起使用sleep()
和waitForAngular()
:
browser.sleep(10000);
browser.waitForAngular();
我真的不明白为什么有时waitForAngular()
无法等待页面同步完成,而这个“双重等待”代码确实有效。
请查看它是否适用于您的情况。
【讨论】:
【参考方案3】:将 allScriptsTimeout 更改为大于 11000 千的值解决了我的问题
等待量角器超时...
在 node_modules/protractor/lib/configParser.js 中,更改:
allScriptsTimeout: 25000
【讨论】:
您不应该更改模块内部的默认值...在您自己的配置文件中更改它。请参阅下面的评论 (***.com/a/36353189/672870)。【参考方案4】:在量角器配置文件中添加 allScriptsTimeout: 50000
exports.config =
...
allScriptsTimeout: 50000,
...
;
或者至少这解决了我的问题
【讨论】:
以上是关于错误超时等待量角器在 11 秒后与页面同步的主要内容,如果未能解决你的问题,请参考以下文章
等待 Protractor 与页面同步时出错:在 Protractor IE11 执行中
使用带有 Angular2 和 Socket.io 的量角器运行 e2e 测试