browser.wait()用于ng-if指令

时间:2015-06-15 22:38:52

标签: angularjs protractor angular-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!');
});

这个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!');
});

1 个答案:

答案 0 :(得分:2)

尝试返回一个解析为布尔值的promise:

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

让我知道它是否有效。

相关问题