我有一个使用Angular Growl v2的应用程序,在我的量角器测试中,我想确保发生growl事件并且它包含正确的文本。所以我有以下检查:
var expectGrowlMessage = function(text) {
var growl = element(by.css('.growl-message'));
# Protractor stops here until growl div is removed
browser.wait(EC.presenceOf(growl), 3004, 'Waiting for growl to appear');
expect(growl.getText()).toContain(text);
browser.wait(EC.not(EC.presenceOf(growl)), 7002, 'Waiting for growl message to disappear');
};
我能说的(通过console.log
)正在发生的是,量角器将进入expectGrowlMessage
,然后在第一个browser.wait
之前停止。在浏览器中,我可以看到咆哮消息,因此第一次等待应该成功。一旦移除了growl元素,那么当量角器进行第一次等待检查时,这显然会失败。
我尝试了browser.driver.wait
和browser.waitForAngular()
两种似乎都无法正常工作。
关于Protractor正在做什么以及如何让它发挥作用的任何建议?
答案 0 :(得分:1)
尝试通过使用"然后"来确定您想要做什么的订单:
var expectGrowlMessage = function(text, timeout = 3004) {
var growl = element(by.css('.growl-message'));
var EC = protractor.ExpectedConditions;
browser.wait(EC.presenceOf(growl), timeout).then(function(){
expect(growl.getText()).toContain(text);
});
});