0

在我的 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 调用完成指定的“超时”。我想知道是否有可以用于 q.js 库的等价物?

我是测试人员而不是网页设计人员,并且对 q 库的经验很少,浏览它的文档我看不到任何可能包含我想要的信息的相关静态属性。

4

1 回答 1

2

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

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

如果您register(promise)每次创建承诺时都调用,则只需测试是否pending === 0

register方法还可用于检查待处理的 jQuery 承诺(或任何其他类型的具有工作then方法的承诺),因为Q它们会同化它们。

于 2013-04-29T23:26:51.773 回答