2015-06-15 29 views
2

我有这样的测试:browser.wait()为NG-if指令

it('should get alert', function() { 
    browser.wait(element(by.css('[ng-if="alert"]')).isPresent()); 

    var alert = element(by.binding('alert')); 
    expect(alert.getText()).toBe('Copy clicked!'); 
}); 

为这个网站:

<div ng-if="alert" class="ng-scope"> 
    <br> 
    <b layout="row" layout-align="center center" class="md-padding"> 
     {{alert}} 
    </b> 
</div> 

的浏览器不等待警报块存在,因此测试失败。如果我使用browser.sleep()等待它,那么它可以工作,但我不想使用browser.sleep()。我曾尝试使用browser.wait()与xpath,css路径,className和您在问题中看到的css。这些都没有奏效。是否有可能告诉浏览器等待ng-if块?

SOLUTION:

it('should get alert', function() { 
    browser.wait(function() { 
     return element(by.css('[ng-if="alert"]')).isPresent(); 
    ), 10000}; 

    var alert = element(by.binding('alert')); 
    expect(alert.getText()).toBe('Copy clicked!'); 
}); 

回答

2

尝试返回解析为一个布尔承诺:

browser.wait(function() { 
    var waitTimeInMilliseconds = 10000; 
    return element(by.css('[ng-if="alert"]')).isPresent() 
}, waitTimeInMilliseconds); 

让我知道,如果它的工作原理。

+0

我收到一个错误,说明等待在大约40ms后超时。有没有办法告诉它最大或最小的等待时间? –

+0

没关系我想通了。只需要在最后加上“,10000”。感谢您的帮助:) 更新了我的问题,以及 –