[英]How to wait for a event to be processed in a protractor end to end test?
我有非常简单的AngularJs 1.4.8前端:
填写表单并按下确定按钮后,新人将被添加到表中。
的形式是在addingPersonController
和表在allPersonsController
,两者都是儿童的下masterController
。
添加用户( 单击确定 )后会发生以下情况:
POST
请求被发送到服务器以添加新人。 personAddedEvent
发射与$emit
从addingPersonController
到masterController
masterController
广播的updatePersonsEvent
到allPersonsController
allPersonsController
向服务器发送GET请求以获取所有人并更新表。 我有一个演示这种情况的量角器端到端测试,问题是我无法弄清楚如何在检查断言之前等待整个过程完成,测试总是失败。
手动测试时,UI工作正常,我试图在量角器测试中等待:
browser.wait(function(){}, timeout);
browser.sleep(ms);
.click().then();
他们都没有工作。
有没有办法在检查断言之前等待这样的过程完成?
我的e2e测试也遇到了类似的问题。 可以添加几种解决方法。 取决于情况,主要是由于某种非响应超时(量角器/ selenium和浏览器之间失去同步)。 这就像PC的缺陷,原因是缺乏资源( GPU/VRAM
, RAM
或CPU
)。 而这导致量角器内置的“等待角度工作”失去了跟踪。 并在应该运行之前运行规范。
这是我建议您尝试的列表:
browser.waitForAngular();
browser.wait()
ExpectedConditions这总是最好的,因为它肯定适用于所有情况。 即使在外面的角度环境 关于这个的坏事是...打字很长 browser.wait( ExpectedConditions.textToBePresentInElement( $('#someId'), "Person's Name"), 10000);
编辑: 错别字和使答案更容易理解
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.