Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: ActiveX/СОМ/CORBA > Вопрос по WebBrowser и его ovElements


Автор: razumsap 25.1.2008, 16:09
Собственно вопрос.
Загружаю  в WebBrowser html страничку, на которой присутсвует кнопка.
пытаюсь её нажать (программно - вот код)

Код

var   ovElements: OleVariant;
begin
  ovElements := WebBrowser1.OleObject.Document.forms.item(0).elements;
  for i := 0 to (ovElements.Length - 1) do
 if       (ovElements.item(i).Value = 'отправить') then
          ovElements.item(i).Click;
end;


Пишет ошибку по памяти такойто.
Начал трассировать 
и на этой строке ovElements := WebBrowser1.OleObject.Document.forms.item(0).elements;
выбивает ошибку.

До этого делал всё по отдельности - одной кнопкой на форме загружал страничку в браузер, а другой кнопкой имитировал  нажатие кнопки в браузере.

Мне кажеться это из-за того, что браузер не успел загрузить страницу а я пытаюсь её уже обработать.

Так вот, как дождаться (программно) полной загрузки WebBrowser  чтоб не было ошибки?

Автор: MetalFan 25.1.2008, 19:52
Цитата(razumsap @  25.1.2008,  16:09 Найти цитируемый пост)
выбивает ошибку.

ну неужели? и какую же?


Цитата(razumsap @  25.1.2008,  16:09 Найти цитируемый пост)
Так вот, как дождаться (программно) полной загрузки WebBrowser  чтоб не было ошибки?

проверять ReadyState? обработать какой-нибудь OnXXXComplete?

Автор: razumsap 4.2.2008, 16:50
Такой вопрос
есть пхп страничка на которой есть такой вот код, который программа не находит, т.е.не нпжимает кнопку
Код

<TD ALIGN="RIGHT" WIDTH="50%">
        <FORM name="addc" METHOD="post" ACTION="add.php">
        <span class=pagetitles><CENTER>Добавить</CENTER></span><BR>
        <CENTER><input type=hidden name='action' value='add'>
        <INPUT TYPE="submit" NAME="ДА" VALUE="ДА"></CENTER>
        </FORM>
     </TD>

дело в том что программа прекрасно обрабатывает  строки типа вот этой 
Код

   <input class="text" name="submit" type="submit" class="button" value="отправить">


вот код
Код

  ovElements := WebBrowser1.OleObject.Document.forms.item(0).elements;
  for i := 0 to (ovElements.Length - 1) do
    if (ovElements.item(i).type = 'submit')and
      (ovElements.item(i).VALUE = 'ДА') then
      ovElements.item(i).Click;


кто сталкивался подскажите, почему в 2-х подобных случаях программа работает по разному?

Автор: December 6.2.2008, 21:49
Цитата(razumsap @  4.2.2008,  16:50 Найти цитируемый пост)
VALUE="ДА

Цитата(razumsap @  4.2.2008,  16:50 Найти цитируемый пост)
value="отправить


Автор: razumsap 8.2.2008, 11:36
Вопрос по этой же теме.

Сталкнулся с ситуацией. WebBrowser загрузил страницу. После чего я её сохраняю на диск и заполняю в ней необходимые поля, после чего опять загружаю в WebBrowser (file://localhost/D:/Delphi/send.html - это её адрес (путь) на диске) нажимаю на нём Отправить и СМС-ка отправляется. 

Сталкнулся с проблемой, что это работает если страница html (), а если php, то нажатие кнопки приводит к ошибке  
Код

Вы попытались получить доступ к адресу file://localhost/D:/Delphi/send.php, который сейчас не доступен. Убедитесь, пожалуйста, что веб-адрес (URL) введен правильно и затем попытайтесь загрузить страницу еще раз.

Он понмает что это локальный файл. Как правильно его подменить в WebBrowser чтоб он понимал что это не локальный файл, а та ВЭБстраничка которую я загрузил перед заполнением полей?

Автор: razumsap 8.2.2008, 13:45
Проблему решил, но через одно место


Код

Webbrowser1.Navigate(S);
while Webbrowser1.ReadyState <> READYSTATE_COMPLETE do
    Application.ProcessMessages;

  AssignFile (f, 'test.htm');
  Reset(f);

while not eof(f) do
 begin
  ReadLn(f, lnk);
  memo1.Lines.Append(lnk);
  end;
CloseFile(f);

 WebBrowser1.OleObject.Document.body.innerhtml := memo1.Text;



Пробовал 
Код

 WebBrowser1.OleObject.Document.body.innerhtml :=  LoadFromFile('test.htm');

Не работает, выдаёт ошибку.
Как записать файл сразу в браузер, а не через memo1.Text.






Автор: tratata 14.2.2008, 16:55
Webbrowser.oleobject.document.all.getelementbyname('ДА').click;

Автор: vitalyu 26.3.2008, 02:24
Раз уж тут такая активная поддержка, позвольте спросить:

К примеру, у меня есть в моем html (находящемся в TWebBrowser) java-скрипт вкропление. Как мне можно считать значения переменных в java? и записать туда иные значения.

Зачем все это мне нужно. Хочу использовать java-скрипт как интерпретатор. И заодно выводить различную информацию в TWebBrowser.

Заранее спасибо )

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)