Ожидание завершения всех AJAX-запросов в Selenium (HOWTO)
#21
Отправлено 11 января 2011 - 14:48
#22
Отправлено 12 января 2011 - 12:35
Статья перенесена сюда
Если для написания тестов используется не Selenese, а нормальный язык программирования, то для того, чтобы можно было воспользоваться новым методом, необходимо расширить используемый драйвер, добавив в него этот метод.
Возник закономерный вопрос, как расширить драйвер? (Я использую dotnet)
#23
Отправлено 31 января 2011 - 15:53
#24
Отправлено 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
#25
Отправлено 01 февраля 2011 - 10:35
Это же самое простое, не стал писать, т.к. думал, что и так всё ясно. Добавил в статью вот этот кусок кода (Java):+1. Хотелось бы подробный туториал, как вднерить этот код(среда .net), чтобы функция вызывалась!)
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 анонимных