【问题标题】:AngularJS + Protractor wait for all ajax calls to end / full page load, before running the tests在运行测试之前,AngularJS + Protractor 等待所有 ajax 调用结束/整页加载
【发布时间】:2014-04-02 09:40:22
【问题描述】:

有没有更好的方法等到所有页面加载完毕,

我的 Angular 页面加载了 Promise,这意味着如果所有 ajaxs 调用还没有结束 屏幕上有一个加载器。

我目前正在使用 ptor.sleep(10000),如下例所示:

beforeEach(function(){
    ptor = protractor.getInstance();
    driver = ptor.driver;
    ptor.get(base_url);
    ptor.sleep(10000);
});

有没有更好的方法?

【问题讨论】:

标签: angularjs protractor


【解决方案1】:

如果您在加载开始/结束时使用ng-if 隐藏/显示您的内容,您可以使用以下语法等待页面上出现某个元素(即ng-if 将阻止该元素在 DOM 中直到页面完成加载):

ptor.findElement(by.id('element-only-shown-after-loading')).then(function (myElement) {
    // Your page should be loaded at this point
});

【讨论】:

  • 我不明白为什么会这样,如果元素不在 DOM 中,findElement 不应该找不到它吗?
  • ptor.findElement() 等到它找到该元素来解决它的承诺。因此,您可以被动地等待该元素出现在页面上,然后运行您的代码。
猜你喜欢
  • 1970-01-01
  • 2016-08-07
  • 1970-01-01
  • 2011-02-07
  • 1970-01-01
  • 2013-09-26
  • 2019-11-03
  • 2018-11-22
  • 2021-05-10
相关资源
最近更新 更多