如何在量角器端到端测试中等待事件处理?

时间:2015-12-27 13:52:53

标签: javascript angularjs protractor e2e-testing

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

enter image description here

填写表单并按下确定按钮后,新人将被添加到表格中。

表单位于addingPersonController,表格位于allPersonsController,两个都是masterController下的孩子。

添加用户(确定点击)后,会发生以下情况:

  1. POST请求发送到服务器以添加新人。
  2. personAddedEvent$emit
  3. addingPersonController发出masterController
  4. masterControllerupdatePersonsEvent
  5. 广播allPersonsController
  6. allPersonsController向服务器发送GET请求以获取所有人并更新表。
  7. 我有一个量角器端到端测试练习这个案例,问题是我无法弄清楚如何等待整个过程完成之前检查断言和测试总是失败。

    手动测试时,UI工作正常,我试图在量角器测试中等待:

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

    他们都没有工作 有没有办法在检查断言之前等待这样的过程完成?

1 个答案:

答案 0 :(得分:3)

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

以下是我建议您尝试的列表:

  1. 使用内置等待角度快速并在大多数时间解决问题。但它没有什么可以解决量角器/ selenium和浏览器之间丢失的同步问题。
  2. browser.waitForAngular();

    1. ExpectedConditionsbrowser.wait() 一起使用这始终是最好的,因为它肯定适用于所有情况。即使在外面的角度环境关于这个的坏事是...输入
    2. 很长

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

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

相关问题