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

Фотография

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


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

#21 vitorg

vitorg

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

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

Отправлено 11 января 2011 - 14:48

Статья перенесена сюда
  • 0

#22 bsc

bsc

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

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

Отправлено 12 января 2011 - 12:35

Статья перенесена сюда


Если для написания тестов используется не Selenese, а нормальный язык программирования, то для того, чтобы можно было воспользоваться новым методом, необходимо расширить используемый драйвер, добавив в него этот метод.


Возник закономерный вопрос, как расширить драйвер? (Я использую dotnet)
  • 0

#23 eRil

eRil

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

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

Отправлено 31 января 2011 - 15:53

+1. Хотелось бы подробный туториал, как вднерить этот код(среда .net), чтобы функция вызывалась!)
  • 0

#24 popo_kid

popo_kid

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

  • Members
  • PipPip
  • 79 сообщений

Отправлено 01 февраля 2011 - 08:24

+1. Хотелось бы подробный туториал, как вднерить этот код(среда .net), чтобы функция вызывалась!)


если бы мне надо было, я бы сделал так =)

пишем наследника для DefaultSelenium в нем определяем метод waitForAjaxRequests.
далее берем в руки Reflector и изучаем, например, метод WaitForPageToLoad класса DefaultSelenium, и по аналогии пишем waitForAjaxRequests
не забываем что js код для Selenium.prototype.doWaitForAjaxRequests нужно загружать через SetExtensionJs для каждой сессии браузера, т.е. после каждого Start

либо запускать selenium server так java -jar selenium-server.jar -userExtensions user-extensions.js

далее в наследнике по желанию перегружаем методы waitForPageToLoad, waitForFrameToLoad и waitForPopUp
  • 0

#25 vitorg

vitorg

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

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

Отправлено 01 февраля 2011 - 10:35

+1. Хотелось бы подробный туториал, как вднерить этот код(среда .net), чтобы функция вызывалась!)

Это же самое простое, не стал писать, т.к. думал, что и так всё ясно. Добавил в статью вот этот кусок кода (Java):
import com.thoughtworks.selenium.CommandProcessor;
import com.thoughtworks.selenium.DefaultSelenium;

public class CustomSelenium extends DefaultSelenium {
    public CustomSelenium(String serverHost, int serverPort, String browserStartCommand, String browserURL) {
        super(serverHost, serverPort, browserStartCommand, browserURL);
    }

    public CustomSelenium(CommandProcessor processor) {
        super(processor);
    }

    /**
     * Waits for all active AJAX requests to finish during specified timeout. Works only for AJAX requests which are
     * instantiated using one of the following frameworks: jQuery, Prototype, Dojo. Don't work (immediately returns
     * without any errors) if standard AJAX API is used to send request.
     *
     * @param timeout Timeout in milliseconds.
     */
    public void waitForAjaxRequests(final int timeout) {
        commandProcessor.doCommand("waitForAjaxRequests", new String[]{String.valueOf(timeout)});
    }
}
На .NET повторить не составит труда.
  • 0


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

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