2015-06-15 62 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」。感謝您的幫助:) 更新了我的問題,以及 –