Перейти к содержимому

Фотография

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


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 5

#1 Denis13th

Denis13th

    Новый участник

  • Members
  • Pip
  • 7 сообщений
  • ФИО:Синкевич Денис Сергеевич
  • Город:Гродно


Отправлено 15 января 2016 - 08:34

Тесты пишу на Java + TestNG.

Необходимо работать с результатами поиска, но тест их ищет раньше, чем они появляются на странице.

Помог Thread.sleep(2000);, но запросы же могут и дольше выполняться..

Хочу сделать ожидание завершения ajax-запросов на странице. Поиск в гугле выдал только решение от 2011 года такого плана http://habrahabr.ru/post/111649/, насколько я понял это для селениума 1.0.

Каким образом сделать такое ожидание? Может есть другой способ?

 


  • 0

#2 BabyRoot

BabyRoot

    Специалист

  • Members
  • PipPipPipPipPip
  • 833 сообщений


Отправлено 15 января 2016 - 08:41



    /**
     * Ожидание загрузки всей страницы
     * 
     * @param time 
     */
    public void waitFullPageLoading(Long time) {
        new WebDriverWait(driver, time, 200).until(new ExpectedCondition<Boolean>() {
            @Override
            public Boolean apply(WebDriver driver) {
                return ((JavascriptExecutor) driver)
                        .executeScript("return document.readyState")
                        .equals("complete");
            }
     });
    }       


  • 1

#3 barancev

barancev

    Администратор

  • Admin
  • PipPipPipPipPipPip
  • 6 871 сообщений
  • ФИО:Алексей Баранцев
  • Город:Россия, Москва


Отправлено 15 января 2016 - 08:55

new WebDriverWait(driver, 2000)).until(new ExpectedCondition<Boolean>() {
  public Boolean apply(WebDriver driver) {
    JavascriptExecutor js = (JavascriptExecutor) driver;
    return (Boolean) js.executeScript("return jQuery.active == 0");
  }
};

 P.S. А вот ждать, пока document.readyState == 'complete' нет смысла, потому что Selenium сам это делает.
Подробнее об этом тут:
http://barancev.gith...ading-complete/
http://barancev.gith...r-page-to-load/


  • 1
Алексей Баранцев
Тренинги для тестировщиков (тестирование производительности, защищенности, тест-дизайн, автоматизация):
Линейка тренингов по Selenium

#4 Denis13th

Denis13th

    Новый участник

  • Members
  • Pip
  • 7 сообщений
  • ФИО:Синкевич Денис Сергеевич
  • Город:Гродно


Отправлено 15 января 2016 - 09:03

Спасибо! Пошёл пробовать.


  • 0

#5 Denis13th

Denis13th

    Новый участник

  • Members
  • Pip
  • 7 сообщений
  • ФИО:Синкевич Денис Сергеевич
  • Город:Гродно


Отправлено 15 января 2016 - 09:33

new WebDriverWait(driver, 2000)).until(new ExpectedCondition<Boolean>() {
  public Boolean apply(WebDriver driver) {
    JavascriptExecutor js = (JavascriptExecutor) driver;
    return (Boolean) js.executeScript("return jQuery.active == 0");
  }
};

Этот вариант помог. Спасибо!


  • 0

#6 LaGrandePapa

LaGrandePapa

    Новый участник

  • Members
  • Pip
  • 6 сообщений

Отправлено 14 августа 2019 - 12:44

Добрый день.
Наверное глупый вопрос, но есть ли реализация данного ожидания AJAX запросов для C#?


  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных