【问题标题】:Failed: Timed out waiting for Protractor to synchronize with the page失败:等待量角器与页面同步超时
【发布时间】:2015-10-05 18:59:52
【问题描述】:

我遇到了非常奇怪的问题。在第一次测试运行期间,我几乎总是收到这样的错误:

失败:等待 Protractor 与页面同步 50 秒后超时。请看https://github.com/angular/protractor/blob/master/docs/faq.md

它不依赖于测试内容,经过几次执行,一切都开始正常工作。

我的规格: 量角器 2.1.0 + 茉莉花

它只发生在我的一个项目中,其他的一切都很好。

browser.ignoreSynchronization=true;在我的情况下不起作用,因为它是 100% 角度应用程序。

关于原因的任何想法?这真的很奇怪,因为它主要发生在第一次运行。

我也增加了 allScriptsTimeout: 50000,但看起来没有帮助,也不是解决方案

我用

根元素:'html'

我的配置中的参数,只要 app 是在 html 标签上定义的

【问题讨论】:

  • 您能说明ng-app 的定义位置吗?谢谢。
  • 它是在 html 标签上定义的,我在我的配置中使用 rootElement: 'html' 参数。
  • 但是,浏览器中发生了什么。您是否看到正在测试的应用程序以及您期望的正确的角度页面?
  • 在前 10 秒内,我的第一页无法打开,我在 'data:text/html,' - 我知道没关系,但确实如此第一次很长。此外,我在页面上有加载栏(表明它已完全加载,并且由于某种原因加载它需要很长时间。之后在 2 或 3 或 4 页面上我有这样的错误,它变慢了,但执行正确的操作。手动一切都很好,但是在第一次测试运行中我遇到了这样的错误,即使我从 chrome 切换到 firefox。在失败后的第二次运行中,它像往常一样运行得非常快。
  • 感谢您提供的信息!您如何运行测试以及 onPrepare 内部有什么?

标签: angularjs jasmine protractor angularjs-e2e e2e-testing


【解决方案1】:

你可以试试:browser.manage().timeouts().implicitlyWait(2000);里面onPrepare()

我将它用于我的混合应用程序,也许你的 DOM 的角部分需要一些时间来加载,它可能会对你有所帮助。

编辑:F*** cmets 编辑 :)

我猜你可以用 beforeEach() 函数破解它,或者在第一次测试中使用它,如果这种情况发生,那就是这样的:

dvr = browser.driver; 
browser.ignoreSynchronization = true;
dvr.wait(function() { 
    return browser.driver.isElementPresent(by.css('.ngscope')); }, 30000); //or any other angular element detection
browser.ignoreSynchronization = false;

我还记得有时 webdriver 在启动时会失去浏览器窗口的焦点(我在量角器中没有看到它,但以前在不同的框架下发生过这种情况),并且更改浏览器的分辨率有助于browser.manage().window().setSize(1280, 1024);

【讨论】:

  • 到目前为止它没有帮助(我有 100% Angular 应用程序
  • @SergeyTeplyakov 我已经编辑了答案,因为我不知道 cmets 中的格式化是如何工作的:)
【解决方案2】:

我也遇到了同样的问题,但是在增加超时后它对我有用

allScriptsTimeout: 72000,并尝试添加以下行

jasmineNodeOpts: { isVerbose:真的, 包括StackTrace:真, 显示颜色:真, 默认超时间隔:72000 }

【讨论】:

    猜你喜欢
    • 2023-03-12
    • 2019-10-03
    • 2014-05-16
    • 2018-12-07
    • 2015-05-06
    • 2019-06-12
    • 2016-10-06
    • 2019-08-16
    • 2017-12-30
    相关资源
    最近更新 更多