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

Фотография

WatIn и Java Script


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

#1 burger4you

burger4you

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

  • Members
  • Pip
  • 4 сообщений
  • ФИО:Бурдейный Алексндр

Отправлено 13 октября 2010 - 12:29

Всем привет!

Хотелось бы узнать, нет ли у кого решения вот какой задачи:

У меня сложное AJAX приложение. Я его тестирую связкой WatIn - nUnit. И зачастую приходится ждать исполнение тех или иных Java Script. На данный момент, я ничего кроме System.Threading.Thread.Sleep(***) не придумал. Но это грубый костыль workaround, а мне бы универсальный класс, расширяющий WatIn библиотеку, что бы уметь дожидаться исполнения всех Java Script на данной странице. Я видел решения подобных задач, где использовался jQuery и\или есть доступ к коду самих скриптов. В моем случае это AJAX Control Toolkit и код скриптов редактировать нельзя.

Люди добрые, помогите кто чем сможет, дай вам Бог здоровья!!! :)
  • 0

#2 Zenturio

Zenturio

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

  • Members
  • PipPipPipPip
  • 386 сообщений
  • ФИО:Дмитрий
  • Город:Смоленск - Москва


Отправлено 13 октября 2010 - 12:56

Всем привет!

Хотелось бы узнать, нет ли у кого решения вот какой задачи:

У меня сложное AJAX приложение. Я его тестирую связкой WatIn - nUnit. И зачастую приходится ждать исполнение тех или иных Java Script. На данный момент, я ничего кроме System.Threading.Thread.Sleep(***) не придумал. Но это грубый костыль workaround, а мне бы универсальный класс, расширяющий WatIn библиотеку, что бы уметь дожидаться исполнения всех Java Script на данной странице. Я видел решения подобных задач, где использовался jQuery и\или есть доступ к коду самих скриптов. В моем случае это AJAX Control Toolkit и код скриптов редактировать нельзя.

Люди добрые, помогите кто чем сможет, дай вам Бог здоровья!!! :)

В RFT точно есть, как то видел, да и селениум попробуйте покопать...
  • 0

#3 OVA

OVA

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

  • Members
  • PipPipPipPip
  • 405 сообщений
  • ФИО:Высоцкий Сергей Павлович
  • Город:Новосибирск

Отправлено 15 октября 2010 - 07:41

И зачастую приходится ждать исполнение тех или иных Java Script.

А что конкретно там? Постбэков не дожидается?

Можно вставить вот такое вот добро, например:
public static void InjectAjaxMonitor( this Browser browser )
    {
        const string monitorScript =
            @"function AjaxMonitor(){"
            + "var ajaxRequestCount = 0;"

            + "$(document).ajaxStart(function(){"
            + "    ajaxRequestCount++;"
            + "});"

            + "$(document).ajaxComplete(function(){"
            + "    ajaxRequestCount--;"
            + "});"

            + "this.isRequestInProgress = function(){"
            + "    return (ajaxRequestCount > 0);"
            + "};"
            + "}"

            + "var watinAjaxMonitor = new AjaxMonitor();";

        browser.Eval( monitorScript );
    }
Ну и от этого писать waiter который будет работать через isRequestInProgress().
  • 0

#4 burger4you

burger4you

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

  • Members
  • Pip
  • 4 сообщений
  • ФИО:Бурдейный Алексндр

Отправлено 15 октября 2010 - 12:44

В RFT точно есть, как то видел, да и селениум попробуйте покопать...

Нет, необходим именно WatIn...

А что конкретно там? Постбэков не дожидается?

Именно, не дожидается, да и не должен... Нет такого метода у WatIn, что бы постбэков дожидаться... В этом-то и загвоздка.

Можно вставить вот такое вот добро, например:

Это решение исключительно для jquery, а я в условиях писал, что эти решения не подходят.
  • 0

#5 OVA

OVA

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

  • Members
  • PipPipPipPip
  • 405 сообщений
  • ФИО:Высоцкий Сергей Павлович
  • Город:Новосибирск

Отправлено 15 октября 2010 - 17:33

Надо или впиливать свои скрипты на страничку в зависимости от того чем пользуетесь (например ASP.Net get_isInAsyncPostBack() звать) или брать/писать прокси и ловить через нее все запросы с сайта. Можно еще проверять браузер на busy, но тоже не панацея. Больше мне в голову ничего не приходит.
  • 0


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

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