【问题标题】:How to wait for a event to be processed in a protractor end to end test?如何等待在量角器端到端测试中处理事件?
【发布时间】:2016-04-01 13:38:21
【问题描述】:

我有非常简单的AngularJs 1.4.8前端:

填写完表格并按下确定按钮后,新的人就会添加到表格中。

表格在addingPersonController,表格在allPersonsController,都是masterController下的孩子。

当用户被添加(OK点击)时,会发生以下情况:

  1. POST 请求被发送到服务器以添加新人。
  2. personAddedEvent$emitaddingPersonController 发射到 masterController
  3. masterControllerallPersonsController 广播updatePersonsEvent
  4. allPersonsController 向服务器发送 GET 请求以获取所有人员并更新表格。

我有一个量角器端到端测试来练习这个案例,问题是我不知道如何等待整个过程完成才能检查断言和测试失败。

用户界面在手动测试时有效,我尝试在量角器测试中等待:

  • browser.wait(function(){}, timeout);
  • browser.sleep(ms);
  • .click().then();

它们都不起作用。
有没有办法在检查断言之前等待这样的过程完成?

【问题讨论】:

    标签: javascript angularjs protractor e2e-testing


    【解决方案1】:

    我的 e2e 测试也遇到了一些类似的问题。可以添加几个解决方法。取决于情况,主要是由于某种无响应超时(量角器/硒和浏览器之间失去同步)。这就像 PC 的挂起,由于资源不足(GPU/VRAMRAMCPU)。这导致量角器的内置“等待完成角度工作”失去了跟踪。并在运行规范之前运行它。

    这是我建议您尝试的列表:

    1. 使用内置的等待角度快速解决大部分时间的问题。但它不会处理量角器/硒和浏览器之间失去同步的问题。

    browser.waitForAngular();

    1. 使用ExpectedConditionsbrowser.wait() 这始终是最好的,因为它肯定适用于所有情况。即使是外部角度环境。不好的是……打字时间很长

    browser.wait( ExpectedConditions.textToBePresentInElement( $('#someId'), "Person's Name"), 10000);

    编辑: 错别字,让答案更容易理解

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2017-11-30
      • 2023-04-08
      • 1970-01-01
      • 2022-01-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多