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

Javascript 如何在量角器端到端测试中等待事件处理?,javascript,angularjs,protractor,e2e-testing,Javascript,Angularjs,Protractor,E2e Testing,我有非常简单的AngularJs 1.4.8前端: 填写表格并按下“确定”按钮后,新人员将添加到表格中 表单位于addingPersonController中,表格位于AllPersonController中,两者都是主控制器下的子项 添加用户时(OK单击)会发生以下情况: 将向服务器发送POST请求以添加新人员 PersonadDevent从addingPersonController向主控制器发出$emit masterController向allpersoncontroller AllP

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

填写表格并按下“确定”按钮后,新人员将添加到表格中

表单位于
addingPersonController
中,表格位于
AllPersonController
中,两者都是
主控制器下的子项

添加用户时(OK单击)会发生以下情况:

  • 将向服务器发送
    POST
    请求以添加新人员
  • PersonadDevent
    addingPersonController
    主控制器发出
    $emit
  • masterController
    allpersoncontroller
  • AllPersonController
    向服务器发送GET请求,以获取所有人员并更新表
  • 我有一个量角器端到端测试来测试这个案例,问题是我不知道如何在检查断言之前等待整个过程完成,测试总是失败

    当手动测试UI时,UI可以工作,我尝试使用以下工具等待量角器测试:

    • browser.wait(函数(){},超时)
    • browser.sleep(毫秒)
    • 。单击()。然后()
    他们都没有成功。

    有没有办法在检查断言之前等待这样一个过程完成?

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

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

  • 使用内置的wait for angular快速解决问题,并在大多数情况下解决问题。但它将无法处理量角器/selenium和浏览器之间丢失的同步
  • browser.waitForAngular()

  • 浏览器一起使用。wait()
    这始终是最好的,因为它肯定适用于所有情况。即使是在有角度的环境之外。这件事的坏处是。。。打字时间很长
  • browser.wait(ExpectedConditions.texttobepresentElement($('someId'),“人名”),10000)

    编辑:输入错误,使答案更容易理解