我在我的应用中使用angular-growl-v2通知。
他们工作正常,问题来自我的量角器测试。我必须使用TTL(大约6秒),因为这是一项要求。然后我有以下测试:
it('should send a request and notify the user about the result',function(){
detailPage.verifyEmailtButton.click().then(function(){
var expectedDiv = element(by.css('.alert-success'));
expect(expectedDiv).toBeDefined();
});
});
但它总是抛出一个错误:
NoSuchElementError:找不到使用locator找到的元素:By.cssSelector(" .alert-success")
当TLL为-1时,不会发生这种情况。
有人可以帮忙吗?提前谢谢。
答案 0 :(得分:1)
angular-growl-2使用$timeout
,它与量角器没有很好的配合:量角器在完成与角度过程的同步之前等待超时结束。
因此,当它到达expect
呼叫时,超时已经过去,警报不再存在。请查看此文档的等待页面同步部分:
https://github.com/angular/protractor/blob/master/docs/timeouts.md
(此页面与超时相关,您似乎没有遇到过,但由于默认超时为11秒,因此很可能整个过程(包括您的6秒TTL)发生在超时发生)
对于angular-growl-v2,使用$interval
代替$timeout
,但它目前正在等待测试:
答案 1 :(得分:0)
Explicitly wait for the alert to be present:
detailPage.verifyEmailtButton.click();
var EC = protractor.ExpectedConditions;
var expectedDiv = element(by.css('.alert-success'));
browser.wait(EC.presenceOf(expectedDiv), 10000, "No alert present");