q中'jQuery.active'的等价行为

时间:2013-04-29 14:05:09

标签: javascript selenium-webdriver promise q

在我的c#selenium webdriver测试中,我偶尔会使用:

public void WaitForJQuery(TimeSpan timeout)
{
    var wait = new WebDriverWait(driver, timeout);
    wait.Until(d => (bool)(d as IJavaScriptExecutor).ExecuteScript("return jQuery.active == 0"));
}

等待jQuery调用的指定'timeout'结束。我想知道是否有可用于q.js库的等效文件?

我是测试人员,不是webdesigner,对q库的经验很少,浏览文档时我看不到任何可能包含我想要的信息的相关静态属性。

1 个答案:

答案 0 :(得分:2)

不,Q会独立跟踪每个承诺,因此它维护的唯一记录是未处理的拒绝(出于错误报告的目的)但是构建一些东西并不会太难:

var pending = 0;
function register(operation) {
  pending++
  return Q(operation)
    .finally(function() { pending--; });
}

如果您在每次创建承诺时致电register(promise),只需测试pending === 0

即可获得您所追求的结果

register方法还可用于检查挂起的jQuery promise(或具有有效then方法的任何其他类型的promise),因为Q将同化它们。