【问题标题】:browser.wait() for ng-if directivebrowser.wait() 用于 ng-if 指令
【发布时间】:2015-06-15 22:38:52
【问题描述】:

我有这个测试:

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

【问题讨论】:

    标签: angularjs protractor angular-ng-if


    【解决方案1】:

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

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

    让我知道它是否有效。

    【讨论】:

    • 我收到一个错误,等待大约 40 毫秒后超时。有没有办法告诉它最长或最短等待时间?
    • 没关系,我想通了。只需要在最后加上“, 10000”。感谢您的帮助:) 在我的问题中也更新了它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-11-22
    • 1970-01-01
    • 1970-01-01
    • 2016-07-24
    • 2019-02-26
    • 1970-01-01
    • 2020-10-08
    相关资源
    最近更新 更多