2013-04-29 4 views
0

В моих C# селен тестов WebDriver я иногда приходится использовать:Эквивалент поведения «jQuery.active» в д

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, просматривая документацию. Я не вижу никаких соответствующих статических свойств, которые могут содержать требуемую информацию.

ответ

2

Нет, Q отслеживает каждое обещание independantly поэтому запись только он поддерживает это необработанное отторжение (для целей отчетности ошибки) Это не было бы слишком трудно построить что-то, хотя:

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

Если вы звоните register(promise) каждый раз, когда вы создаете обещание, вы получите результат вы после этого, просто испытывая ли pending === 0

register Этот метод также может быть использован для проверки в ожидании JQuery обещаний (или любой другой тип обещание, который имеет работа then способ) т.к. Q будет ассимилировать их.

+0

Я подозревал, что это произошло после просмотра документов. Ваша идея для функции регистрации хорошая, спасибо! –