Ожидание завершения всех AJAX-запросов

Добрый день. Столкнулся с проблемой ожидания изменения элементов.

На странице имеется таблица, которую можно сортировать (сортировка реализована на сервере). Не получается реализовать ожидание, когда прийдут новые данные с сервера. Необходимо дождаться выполнения всех ajax запросов, а не появления какого-либо элемента. 

Как я понял, необходимо http://habrahabr.ru/post/111649/. Но я не разобрался, как это сделать.

Заранее спасибо.

Если брать в общем, то советую JS'ом смотреть сколько активных AJAX-запросов сейчас в обработке. Например, в Prototype это делается при помощи Ajax.activeRequestCount. Для других фреймворков, соответственно, будут другие команды.

В моём проекте используется всё тот же Prototype, так что ожидание завершения всех AJAX-запросов у меня сделано следующим образом:

 

active_requests = driver.execute_script('return Ajax.activeRequestCount')
 
while active_requests is not 0:
    active_requests = driver.execute_script('return Ajax.activeRequestCount')
    time.sleep(0.1)
1 лайк

Витягнув з одного із опен сорсних проектів тут, сам не користувався, небуло потреби...

 

Вони робили наступним чином (перепрошую за форматування):

private static final String JQUERY_ACTIVE_CONNECTIONS_QUERY = "return $.active == 0;";
 

protected void waitUntilAjaxRequestCompletes() {
new FluentWait<WebDriver>(driver).withTimeout(DEFAULT_TIMEOUT_IN_SECONDS, TimeUnit.SECONDS)
.pollingEvery(DEFAULT_SLEEP_TIME_IN_SECONDS, TimeUnit.SECONDS).until(new ExpectedCondition<Boolean>() {
public Boolean apply(WebDriver d) {
JavascriptExecutor jsExec = (JavascriptExecutor) d;
return (Boolean) jsExec.executeScript(JQUERY_ACTIVE_CONNECTIONS_QUERY);
}
});
}
 

 

 

1 лайк