Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Доступ к полям страницы TWebBrowser с фреймами [D5, D6, D7, Win95/98, WinXP]


WebSQLNeeder ©   (2005-10-31 13:46:00) 

Есть страница с фреймами и нужно програмно кликнуть на кнопку или заполнить поле. делаю вот так, но выдает ошибку

WebBrowser1.OleObject.document.frames['input'].document.forms[0].message.value:='HellO';

Ошибка звучит так: Method 'frames' not supported by automation object


VENOM   (2005-11-04 02:48:00) [1]

WebSQLNeeder, ты вообще смотрел МСДН ?!
Я - смотрел, и вот до чего я дошел (коряво - но коротко и работает):


procedure TMainForm.FillForms(login, pass: string);
var
 Document: VARIANT;
 m: Integer;
 ovElements: OleVariant;
 i: Integer;
 name_frame: OleVariant;
begin
 Document := WB.Document;
 if Document.frames.Length = 0 then exit;

 name_frame := 'main';
 Document := Document.frames.Item(name_frame).document;
 name_frame := 'display';
 Document := Document.frames.Item(name_frame).document;

// count forms on document and iterate through its forms
for m := 0 to Document.forms.Length - 1 do
begin
  ovElements := Document.forms.Item(m).elements;
  // iterate through elements
  for i := 0 to ovElements.Length - 1 do
  begin
    // when input fieldname is found, try to fill out
    try
      if (CompareText(ovElements.item(i).tagName, 'INPUT') = 0) and
         (CompareText(ovElements.item(i).type, 'text') = 0) and
         (CompareText(ovElements.item(i).name, 'username') = 0)then
      begin
        ovElements.item(i).Value := login;
      end;

      if (CompareText(ovElements.item(i).tagName, 'INPUT') = 0) and
         (CompareText(ovElements.item(i).type, 'password') = 0) and
         (CompareText(ovElements.item(i).name, 'autentication') = 0) then
      begin
        ovElements.item(i).Value := pass;
      end;

      {if (CompareText(ovElements.item(i).tagName, 'input') = 0) and
         (CompareText(ovElements.item(i).type, 'image') = 0) and
         (CompareText(ovElements.item(i).src, 'files/entra.gif') = 0) then
      begin
        ovElements.item(i).Click;
      end;   }

     except
    end;
  end;
end;

end;


Если у тебя по жизни есть мозги, то слушай кровосток и г. москвы... и больше кури... больше кури... больше кури... больше кури... больше кури...

Всем мира (-:


WebSQLNeeder   (2005-11-02 10:47:00) [2]

Кстати про тег <a

Как занести в Мемо все теги, которые присутствуют на этой странице, я пробую так но выдает ошибку Method 'value' not supported by automation object

procedure TForm1.Button3Click(Sender: TObject);
var anch:OleVariant;
i:integer;
begin
anch:=WebBrowser1.OleObject.document.frames.item(5).document.all.tags('a');
for i:=3 to anch.length-1 do
begin
 memo1.Lines.Add(anch.item(i).value);
end;


WebSQLNeeder   (2005-11-02 09:50:00) [3]

Спасибо, сейчас протестирую.

По поводу ошибки - так это ошибка Delphi, а не ИЕ.

Кстати, какая версия Делфи у тебя?


SergP   (2005-11-02 04:45:00) [4]

Странно... Вроде бы правильно.... Например я у себя нашел нечто типа клика по ссылке в фрейме:

WebBrowser1.OleObject.document.frames.item(0).document.all.tags('a').item(1).click;

Все работает. Такой ошибки как у тебя, что frames не поддерживается, не выдает...

Может эксплорер у тебя старый?
Или WIN95, где эксплорер не поддерживал фреймов?


SergP.   (2005-11-01 17:50:00) [5]

Сталкивался. Знаю как... Но не помню... Если вспомню, то напишу...


WebSQLNeeder   (2005-11-01 15:27:00) [6]

Что, никто не сталкивался с проблемой??


Наверх

Титульная страница Поиск, карта сайта Написать письмо