繁体   English   中英

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

[英]How to wait for a event to be processed in a protractor end to end test?

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

在此输入图像描述

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

的形式是在addingPersonController和表在allPersonsController ,两者都是儿童的下masterController

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

  1. POST请求被发送到服务器以添加新人。
  2. 一个personAddedEvent发射与$emitaddingPersonControllermasterController
  3. masterController广播的updatePersonsEventallPersonsController
  4. allPersonsController向服务器发送GET请求以获取所有人并更新表。

我有一个演示这种情况的量角器端到端测试,问题是我无法弄清楚如何在检查断言之前等待整个过程完成,测试总是失败。

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

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

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

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

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

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

browser.waitForAngular();

  1. 使用带有browser.wait() ExpectedConditions这总是最好的,因为它肯定适用于所有情况。 即使在外面的角度环境 关于这个的坏事是...打字很长

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

编辑: 错别字和使答案更容易理解

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM