量角器和不必要的等待

时间:2017-07-11 15:19:35

标签: angularjs protractor

我有一个使用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.waitbrowser.waitForAngular()两种似乎都无法正常工作。

关于Protractor正在做什么以及如何让它发挥作用的任何建议?

1 个答案:

答案 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);
    });
});