如何等待在量角器端到端测试中处理事件?
Posted
技术标签:
【中文标题】如何等待在量角器端到端测试中处理事件?【英文标题】: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点击)时,会发生以下情况:
POST
请求被发送到服务器以添加新人。
personAddedEvent
与 $emit
从 addingPersonController
发射到 masterController
masterController
向allPersonsController
广播updatePersonsEvent
allPersonsController
向服务器发送 GET 请求以获取所有人员并更新表格。
我有一个量角器端到端测试来练习这个案例,问题是我不知道如何等待整个过程完成才能检查断言和测试失败。
用户界面在手动测试时有效,我尝试在量角器测试中等待:
browser.wait(function(), timeout);
browser.sleep(ms);
.click().then();
它们都不起作用。有没有办法在检查断言之前等待这样的过程完成?
【问题讨论】:
【参考方案1】:我的 e2e 测试也遇到了一些类似的问题。可以添加几个解决方法。取决于情况,主要是由于某种无响应超时(量角器/硒和浏览器之间失去同步)。这就像 PC 的挂起,由于资源不足(GPU/VRAM
、RAM
或 CPU
)。这导致量角器的内置“等待完成角度工作”失去了跟踪。并在运行规范之前运行它。
这是我建议您尝试的列表:
-
使用内置的等待角度快速解决大部分时间的问题。但它不会处理量角器/硒和浏览器之间失去同步的问题。
browser.waitForAngular();
-
使用ExpectedConditions 和
browser.wait()
这始终是最好的,因为它肯定适用于所有情况。即使是外部角度环境。不好的是……打字时间很长
browser.wait( ExpectedConditions.textToBePresentInElement( $('#someId'), "Person's Name"), 10000);
编辑: 错别字,让答案更容易理解
【讨论】:
以上是关于如何等待在量角器端到端测试中处理事件?的主要内容,如果未能解决你的问题,请参考以下文章