Таймаут поиска элемента на странице

famous1144

Client
Регистрация
27.03.2014
Сообщения
137
Благодарностей
53
Баллы
28
Собственно, есть сайт, работающий полностью на ajax. Т.е. нажал кнопку отправки формы - страница не перезагружается, а асинхронно грузится контент и вставляется, куда ему положено.

В Зеннопостере мы кликаем на кнопочку и сразу же идет переход к следующему действию(т.е. браузер не занят, значит, станица загрузилсь). А страница-то на самом деле еще не загрузилась, запрос все еще идет. И следующий экшн(например, ввод данных в поле) не выполняется, т.к. и поля никакого еще нет. Где в настройках можно отрегулировать время ожидания появления элемента на странице?
 

Gfoblin

Client
Регистрация
30.05.2013
Сообщения
4 553
Благодарностей
995
Баллы
113
  • Спасибо
Реакции: famous1144

famous1144

Client
Регистрация
27.03.2014
Сообщения
137
Благодарностей
53
Баллы
28
Спасибо, это оно.
 

famous1144

Client
Регистрация
27.03.2014
Сообщения
137
Благодарностей
53
Баллы
28
Нет, все же это не оно. Если снять галочку "игнорировать аякс", скрипт будет ожидать загрузки страницы даже при загрузке рекламы и т.д., это очень тормозит процесс. Сейчас я написал таую функцию-замыкание на C#:
Код:
int MaxTry = 10;
int Pause = 1000;
project.Context["GetElementByXPath"] = (Func<string, HtmlElement>)((XPath) => {
   HtmlElement El;
   for(int i = 0; i < MaxTry; i++) {
     El = instance.ActiveTab.FindElementByXPath(XPath, 0);
     if(!El.IsNull) return El;
     else Thread.Sleep(Pause);
   }
   throw new Exception("Элемент " + XPath + " не найден!");
});
Она ждем максимум 10 сек(10 по 1), а потом кидает исключение, если элемент за 10 сек не появился. Все-таки стоит внести такой же функционал в стандартный набор.
 

LexxWork

Client
Регистрация
31.10.2013
Сообщения
1 190
Благодарностей
788
Баллы
113
я уже наверно неделю думаю над такой ситуацией
делаю шаб с эмулятором мыши для гугла.
есть список List<HtmlElemnt>. Список елементов отфильтровывается, что-то удаляется, что-то остается.
я передаю каждый элемент из списка в контекст делегату, подобно посту выше и там уже идет работа.
В однопоточном режиме все прекрасно, но в многопотоке некоторые елементы почемуто теряют свои свойства: положение, размеры...
Пробовал передавать элемент не в параметрах делегата, а через контест - та же фигня.
Пробовал передавать в делегат не сам элемент а значения для FindElementByAttribute. Стало по-лучше но все равно 5% теряют свои свойства. Приходится перед каждым важным моментом опять искать этот элемент, а это не прикольно.
Хуже всего что я не могу унивирсализировать данный метод, потому что для каждого элемента требуются свои методы поиска.
Я понимаю, что это какой-то баг и наверно прийдется делать тестовый шаб для демонстрации.
Было бы вобще круто если бы каждый елемент имел бы у себя хотябы xpath, а лучше ссылку на метод поиска. Но только чтоб они тоже не терялись.
 
Последнее редактирование:

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)