我有这个测试:
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!');
});
这个html:
<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块?
解决方案:
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!');
});
答案 0 :(得分:2)
尝试返回一个解析为布尔值的promise:
browser.wait(function() {
var waitTimeInMilliseconds = 10000;
return element(by.css('[ng-if="alert"]')).isPresent()
}, waitTimeInMilliseconds);
让我知道它是否有效。