Модераторы: MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Дождаться выполнения скрипта. 
:(
    Опции темы
Mach3
Дата 1.11.2011, 05:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 26.11.2005

Репутация: нет
Всего: 2



Привет. Пытаюсь загрузить страничку, кликнуть по "кнопке" и после получить нужный контент. Но как дождаться окончания выполнения Java скрипта не знаю.

Код

 WebBrowser1.Navigate('http://yandex.ru');

 while WebBrowser1.ReadyState <> READYSTATE_COMPLETE do
    Application.ProcessMessages;
 WebBrowser1.OleObject.Document.getElementByID('show_contacts').click; 

 S:= WebBrowser1.OleObject.Document.getElementByID('show_contacts').innerHTML; 


Необходимо, чтобы в S содержалось значение после выполнения скрипта..


--------------------
Век живи - век учись...
PM MAIL ICQ   Вверх
Alexeis
Дата 1.11.2011, 09:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: нет
Всего: 459



Сработает обработчик OnDocumentComplete после исполнения скрипта насколько я помню. 


--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Mach3
Дата 1.11.2011, 09:16 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 26.11.2005

Репутация: нет
Всего: 2



пробовал.. но попробую еще раз..
спс.

Добавлено через 11 минут и 45 секунд
Не срабатывает!

Это сообщение отредактировал(а) Mach3 - 1.11.2011, 09:21
--------------------
Век живи - век учись...
PM MAIL ICQ   Вверх
Alexeis
Дата 1.11.2011, 10:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Амеба
Group Icon


Профиль
Группа: Админ
Сообщений: 11743
Регистрация: 12.10.2005
Где: Зеленоград

Репутация: нет
Всего: 459



По ходу на яндексе нет элемента с ID 'show_contacts'




--------------------
Vit вечная память.

Обсуждение действий администрации форума производятся только в этом форуме

гениальность идеи состоит в том, что ее невозможно придумать
PM ICQ Skype   Вверх
Mach3
Дата 1.11.2011, 10:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 26.11.2005

Репутация: нет
Всего: 2



эм.. не яндекс..
http://tyumen.drom.ru/chevrolet/lacetti/6055456.html

Добавлено через 3 минуты и 34 секунды
пробовал по таймеру получить S. Все норм..
не могу понять, почему следующий код не работает
Код

repeat
  sleep(1000);
  S:= WebBrowser1.OleObject.Document.getElementByID('show_contacts').innerHTML;
    memo1.Lines.Add('NOT_READY')
 until  pos('+7',S) > 0;
memo1.Lines.Add(s);


в браузере контакты уже открылись, а значение не изменилось..
буд-то старые данные юзает..
--------------------
Век живи - век учись...
PM MAIL ICQ   Вверх
Snowy
Дата 1.11.2011, 10:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 4
Всего: 484



Цитата(Mach3 @  1.11.2011,  10:20 Найти цитируемый пост)
не могу понять, почему следующий код не работает
Потому что Sleep(1000) не делает паузу на секунду, а засыпает тред на секунду.
А, поскольку твоё приложение выполняется в одном треде, то засыпает всё. В том числе и браузер.
Попробуй крутить секунду Application.ProcessMessages. Возможно это сработает:
Код

  while WB.ReadyState <> READYSTATE_COMPLETE do 
     Application.ProcessMessages;

PM MAIL   Вверх
Mach3
Дата 1.11.2011, 15:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Бывалый
*


Профиль
Группа: Участник
Сообщений: 158
Регистрация: 26.11.2005

Репутация: нет
Всего: 2



Код

 while WebBrowser1.ReadyState <> READYSTATE_COMPLETE do
   Application.ProcessMessages;

 WebBrowser1.OleObject.Document.getElementByID('show_contacts').click;
 
 repeat
  S:= WebBrowser1.OleObject.Document.getElementByID('show_contacts').innerHTML;
  if pos('+7',S) > 0 then
   memo1.Lines.Add(s)
  else
   memo1.Lines.Add('NOT_READY');
   Application.ProcessMessages();
 until  pos('+7',S) > 0;
 memo1.Lines.Add(s);


Так вроде работает..
Спасибо.
--------------------
Век живи - век учись...
PM MAIL ICQ   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: ActiveX/СОМ/CORBA"

Rrader
Girder

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


  • Литературу по Delphi обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Delphi
  • Вопросы по SQL и вопросы по базам данных, не связанные с Delphi, задавать здесь

Если Вам помогли, и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Rrader, Girder.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: ActiveX/СОМ/CORBA | Следующая тема »


 




[ Время генерации скрипта: 0.0546 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.