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

Фотография

Webdriver окончание ожидания AJAX


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

#1 Pirokar

Pirokar

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

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

Отправлено 13 июня 2014 - 12:23

Добрый день! Я использую Java. После загрузки страницы продолжают выполняться AJAX запросы, хотя все элементы уже есть, только они заблокированы до окончания запросов. Как поставить ожидания на окончание запросов? 

Пробовал вот такой метод (там ждет еще конец javascript):

 

    private void waitForjQueryAndAjaxComplete() throws InterruptedException {
        JavascriptExecutor executer = (JavascriptExecutor) driver;
        Boolean jqueryDone = false, ajaxRunning = true;
        do
        {
            Thread.sleep(500);
            jqueryDone = (Boolean) executer.executeScript("return jQuery.active == 0");
            ajaxRunning = ((Boolean) executer.executeScript("return Ext.Ajax.isLoading()"));
        } while (!jqueryDone && ajaxRunning);
    }

Но вот на строке 

ajaxRunning = ((Boolean) executer.executeScript("return Ext.Ajax.isLoading()"));

валится с ошибкой:

org.openqa.selenium.WebDriverException: JavaScript error (WARNING: The server did not provide any stacktrace information)Command duration or timeout: 26 milliseconds
Build info: version: '2.41.0', revision: '3192d8a', time: '2014-03-27 17:18:15'
Driver info: org.openqa.selenium.ie.InternetExplorerDriver
Capabilities [{browserAttachTimeout=0, enablePersistentHover=true, ie.forceCreateProcessApi=false, ie.usePerProcessProxy=false, ignoreZoomSetting=false, handlesAlerts=true, version=11, platform=WINDOWS, nativeEvents=true, ie.ensureCleanSession=false, elementScrollBehavior=0, ie.browserCommandLineSwitches=, requireWindowFocus=false, browserName=internet explorer, initialBrowserUrl=http://localhost:21254/, takesScreenshot=true, javascriptEnabled=true, ignoreProtectedModeSettings=false, enableElementCacheCleanup=true, cssSelectorsEnabled=true, unexpectedAlertBehaviour=dismiss}]
Session ID: 15b9a9c3-1db0-44ac-a0ed-3dacc54a7c94

 


  • 0

#2 vmaximv

vmaximv

    Опытный участник

  • Members
  • PipPipPipPip
  • 350 сообщений

Отправлено 13 июня 2014 - 12:51

1. Вы этот код сами писали?
2. А какие мысли у вас по поводу данного эксепшена?
3. При чем тут Селениум?
  • 0

#3 Pirokar

Pirokar

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

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

Отправлено 13 июня 2014 - 13:10

Код, на котором падает,я подсмотрел в интернете. Не нравится JavaScript, очевидно, хотя на нескольких страницах в интернете его представляют как абсолютно рабочий. Селениум конкретно не при чем, это касается его косвенно - просьба была либо показать ошибку, либо подсказать другое решение по моему вопросу.


  • 0

#4 aksas

aksas

    Активный участник

  • Members
  • PipPip
  • 130 сообщений
  • Город:Харьков

Отправлено 13 июня 2014 - 13:13

 

To wait until an AJAX call is complete when the site uses ExtJS check the following javascript function:

return Ext.Ajax.isLoading();

Вы точно используете ExtJS?


  • 0

#5 vmaximv

vmaximv

    Опытный участник

  • Members
  • PipPipPipPip
  • 350 сообщений

Отправлено 13 июня 2014 - 13:16

Селениум ошибку вам уже показал. Ее причины или другие решения, без доступа к приложению, никто вам не подскажет.
  • 0

#6 aksas

aksas

    Активный участник

  • Members
  • PipPip
  • 130 сообщений
  • Город:Харьков

Отправлено 13 июня 2014 - 13:23

 косвенно - просьба была либо показать ошибку, либо подсказать другое решение по моему вопросу.

готового решения нет. Можете попробовать испльзовать тот факт, что "все элементы уже есть, только они заблокированы до окончания запросов" и ждать пока не разблокируются.


  • 0

#7 Pirokar

Pirokar

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

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

Отправлено 13 июня 2014 - 13:34

Как его использовать? Ведь они уже видимы и присутствуют на странице. А еще бывает IE зависает и тогда в тесте я ловлю эксепшены. Может быть как-то можно отслеживать отзывчивость браузера?


  • 0

#8 aksas

aksas

    Активный участник

  • Members
  • PipPip
  • 130 сообщений
  • Город:Харьков

Отправлено 13 июня 2014 - 13:42

Как его использовать? Ведь они уже видимы и присутствуют на странице. А еще бывает IE зависает и тогда в тесте я ловлю эксепшены. Может быть как-то можно отслеживать отзывчивость браузера?

а вот тут я полностью согласен с vmaximv - решения, без доступа к приложению, никто вам не подскажет.

Попросите разработчиков помочь в поиске решения


  • 0

#9 Pirokar

Pirokar

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

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

Отправлено 13 июня 2014 - 13:53

Печаль... Ладно, спасибо всем!


  • 0


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

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