量角器waitForAngular或.count()不起作用

时间:2017-11-16 21:04:36

标签: angular protractor

我有这个令人讨厌的问题,其中count()在更改后没有更新。我的测试设置了一些输入值,然后执行以下操作:

$$('.label-entry').count().then(beforeCount => {
    btnSaveLabel.click();
    browser.waitForAngular();
    $$('.label-entry').count().then(count => expect(count).toEqual(beforeCount + 1));
});

测试应该单击一个进行API调用的保存按钮,等待该调用结束,并检查div的数量是否增加了1(手动测试时是这样)。不知何故,测试设法失败了。对count()的第一次呼叫正常,但第二次呼叫没有。我在这里缺少什么?

<div class="label-entry" *ngFor="let labelEntry of labelEntries">

1 个答案:

答案 0 :(得分:0)

嗯......也许你不需要你的第二个then(),因为expect应该已经解决了你的承诺。

你可以试试这个:

$$('.label-entry').count().then(beforeCount => {
    btnSaveLabel.click();
    browser.waitForAngular();
    expect($$('.label-entry').count()).toEqual(beforeCount + 1);
});

或最终:

$$('.label-entry').count().then(beforeCount => {
    btnSaveLabel.click();
    browser.waitForAngular();
    //wrap it in a browser.wait() to see, if you get the result before timeout
    browser.wait(expect($$('.label-entry').count()).toEqual(beforeCount + 1), 5000);
});

或最终(虽然是实验性的):

$$('.label-entry').count().then(beforeCount => {
    btnSaveLabel.click();
    browser.waitForAngular();
    browser.wait(($$('.label-entry').count() > beforeCount), 5000);
    expect($$('.label-entry').count()).toEqual(beforeCount + 1);
});