【问题标题】:Protractor- need to slow down promise resolves量角器 - 需要减慢承诺解决
【发布时间】:2016-05-04 21:41:45
【问题描述】:

在测试我的 Angular App e2e 时,我有一个承诺可以快速解决并且元素不显示(要明确的是,它在手动单击时确实显示在测试之外)。

我使用此代码来减慢 promise 的解析速度。它确实成功地减慢了其他一切的量角器测试......但它并没有减慢承诺的解决。有什么建议吗?

origFn = browser.driver.controlFlow().execute;

browser.driver.controlFlow().execute = function() {
  var args;
  args = arguments;
  origFn.call(browser.driver.controlFlow(), function() {
    return protractor.promise.delayed(100);
  });   
  return origFn.apply(browser.driver.controlFlow(), args);
};

【问题讨论】:

  • 你是在测试是否出现了一些加载指示器还是什么?
  • 有点....我有一个加载横幅。当一个承诺被解决时,横幅被解除。在这种情况下,横幅不会显示,因为一切都很快。
  • 要在没有任何明确条件的情况下减速,我使用browser.sleep() 函数。虽然它不是一种标准的编码技术,但它确实可以完成工作。希望对您有所帮助。
  • 不,这不会减慢 promise 的解析速度,这是我需要放慢速度的。

标签: angularjs selenium selenium-webdriver webdriver protractor


【解决方案1】:

首先,Protractor 在执行下一个异步 Promise 之前等待所有 $http 调用被解析。如果你的动画速度很慢,你可能想使用类似下一个代码块的东西来等到元素 isDisplayed() 或 isPresent() 或更复杂的条件:

browser.wait(function() {
  return element(by...).isDisplayed();
}, timeout);

【讨论】:

  • 这是模拟数据,问题是动画速度……要快,因为模拟数据很快。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-14
  • 2019-07-07
  • 2014-08-08
  • 1970-01-01
  • 1970-01-01
  • 2017-06-29
相关资源
最近更新 更多