![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Дождаться выполнения скрипта. [D7]
Mach3 © (2011-11-01 08:20:00)Привет. Пытаюсь загрузить страничку, кликнуть по "кнопке" и после получить нужный контент. Но как дождаться окончания выполнения Java скрипта не знаю.
WebBrowser1.Navigate(' http://www.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 содержалось значение после выполнения скрипта..
sniknik (2011-11-01 10:05:00) [41]> ваш код тоже не сработал..
а он и де должен, у него другая задача - показать, что id show_contacts там нет.
> это не адрес.. это его кусок.. =))
ну и кого ты в итоге обманул?
++
сбор личных данных незаконен.
Mach3 (2011-11-01 10:00:00) [42]
> http://www.ru
это не адрес.. это его кусок.. =))
Mach3 (2011-11-01 09:59:00) [43]ваш код тоже не сработал..
sniknik (2011-11-01 09:58:00) [44]> посмотреть снифером
какие вы сложные...
а чем браузер не подходить?
http://www.ruперенаправляется на http://www.ru/rus/index.phpи это видно прямо в заголовке браузера.
Mach3 (2011-11-01 09:56:00) [45]а.. да пожалуйста..
http://ussuriisk.drom.ru/toyota/succeed/6054110.html
Mach3 (2011-11-01 09:54:00) [46]
> что мешает дать "прямой" адрес?
т.е.? посмотреть снифером и составить нужный запрос серверу?!
пытался, но в запросе необходимо указать параметр, который всегда разный. а как его получить я понять не смог..
sniknik (2011-11-01 09:54:00) [47]> не могу понять, почему следующий код не работает
может потому, что ты нас обманываешь?
по данному адресу вообще нет элемента с show_contacts ... а мы как бы уже выяснили что "в общем" не решается. в частном... может быть, но только если "лечить где болит, а не тоже место у соседа".
var
Elem: Variant;
begin
WebBrowser1.Navigate(' http://www.ru');
while WebBrowser1.ReadyState <> READYSTATE_COMPLETE do
Application.ProcessMessages;
Elem:= WebBrowser1.OleObject.Document.getElementByID('show_contacts');
if not VarIsClear(Elem) then begin
Elem.click;
Memo1.Text:= Elem.innerHTML;
end;
end;
Mach3 (2011-11-01 09:50:00) [48]
> Когда выполнится скрипт на этой странице?
в JS не разбираюсь, но предположу что тут бесконечный цикл с изменением ГИФА каждую 1000ms.. следовательно никогда..
> Проверяй по таймеру - жди, когда будет какой-то известный
> для конкретной страницы признак завершения работы скрипта.
>
по таймеру-то все норм.. так и делал..
не могу понять, почему следующий код не работает
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);
в браузере контакты уже открылись, а значение не изменилось..
буд-то старые данные юзает..
sniknik (2011-11-01 09:39:00) [49]для конкретно данного кода(страницы)... там нет скриптов, там есть пере направление (302).
что мешает дать "прямой" адрес?
Омлет (2011-11-01 09:25:00) [50]> Mach3 (01.11.11 09:13) [2]
Проверяй по таймеру - жди, когда будет какой-то известный для конкретной страницы признак завершения работы скрипта.
Омлет (2011-11-01 09:13:00) [51]http://js.aceweb.ru/users/4/index/2/index.html
Когда выполнится скрипт на этой странице?
Mach3 (2011-11-01 09:13:00) [52]ммм.. не совсем понял..
если выполнить вышеприведенный мною код, то в S будет содержться контент, как если быWebBrowser1.OleObject.Document.getElementByID('show_contacts').click;не выполнялось.
короче, надо как-то подождать пару секунд, после чего выполнять
S:= WebBrowser1.OleObject.Document.getElementByID('show_contacts').innerHTML;
пробовал после 'клика' запускать подобный цикл:
repeat
sleep(1000);
S := WebBrowser1.OleObject.Document.getElementByID ('show_contacts').innerHTML;
until Pos('+7',S) > 0;
помогло только после клика запустить таймер и по таймеру получить значение в S.
но это бредятина..
неужели никак нельзя отследить завершение выполненияWebBrowser1.OleObject.Document.getElementByID('show_contacts').click;
sniknik (2011-11-01 08:55:00) [53]> Необходимо, чтобы в S содержалось значение после выполнения скрипта..
в общем случае не получится... в веб приложениях (не странички с вкраплениями скриптов) скрипты никогда не заканчивают выполнятся... взаимодействуют с клиентом, по его реакции ветвятся и размножаются... ;)