[Çözüldü] id nolarını nasıl alırız

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

[Çözüldü] id nolarını nasıl alırız

Mesaj gönderen Lord_Ares »

merhaba
web sayfalarına otomatik giriş için kullandığım , sayın marman hocamın çok güzel bir kod örneği var. Bu kod örneğinde, web sayfasındaki formlarda bulunan elementlerin name lerini alabilyorum. Fakat Form1.WebBrowser1.OleObject.Document.Forms.Item(i).Elements.Item(j).Name ] şeklinde name alabiliyorsak id sinide alabiliriz. ( websayfasında id si sürekli değişen elementler var , parse işlemi ile almaktansa bu şekilde alabilirsem websayfası değişse bile sorun çıkmıyacaktır )
teşekkürler.

Kod: Tümünü seç

  
procedure getir;
Var
  i,j : Integer;
begin

  while Form1.WebBrowser1.ReadyState <> ReadyState_Complete do Application.ProcessMessages;

 Form1.Memo1.Lines.Clear;
  if  Form1.WebBrowser1.OleObject.Document.Frames.Length > 0 then begin
     Form1.Memo1.Lines.Add('');
     Form1.Memo1.Lines.Add('-----------------------------');
     Form1.Memo1.Lines.Add('FRAMES bilgileri');
     Form1.Memo1.Lines.Add('-----------------------------');
    for i := 0 to  Form1.WebBrowser1.OleObject.Document.Frames.Length - 1 do
    begin
       Form1.Memo1.Lines.Add( Format('WebBrowser1.OleObject.Document.Frames.Item(%d)', [i]) );
    end;
  end;

  if  Form1.WebBrowser1.OleObject.Document.Forms.Length > 0 then begin
     Form1.Memo1.Lines.Add('');
     Form1.Memo1.Lines.Add('-----------------------------');
     Form1.Memo1.Lines.Add('FORMS bilgileri');
     Form1.Memo1.Lines.Add('-----------------------------');
    for i := 0 to  Form1.WebBrowser1.OleObject.Document.Forms.Length - 1 do
    begin
       Form1.Memo1.Lines.Add( Format(' Form1.WebBrowser1.OleObject.Document.Forms.Item(%d).Document.Body.InnerHTML', [i]) );
      for j := 0 to  Form1.WebBrowser1.OleObject.Document.Forms.Item(i).Elements.Length - 1 do begin
         Form1.Memo1.Lines.Add( Format(' Form1.WebBrowser1.OleObject.Document.Forms.Item(%d).Elements.Item(%d).Name -> ''%s'' ', [i, j,  Form1.WebBrowser1.OleObject.Document.Forms.Item(i).Elements.Item(j).Name ]) );
      end;
    end;
  end;
  ShowMessage('Bitti');end;


En son Lord_Ares tarafından 31 Tem 2011 02:51 tarihinde düzenlendi, toplamda 1 kere düzenlendi.
Lord_Ares
Üye
Mesajlar: 1070
Kayıt: 15 Eki 2006 04:33
Konum: Çorlu

Re: id nolarını nasıl alırız

Mesaj gönderen Lord_Ares »

sayın marman hocama bir kez daha bu güzel kod örneği için teşekkür ediyorum. Cevabını buldum kullanmak isteyen arkadaşlar şu şekilde kullanabilir.


procedure getir;
Var
i,j : Integer;
begin

while Form1.WebBrowser1.ReadyState <> ReadyState_Complete do Application.ProcessMessages;

Form1.Memo1.Lines.Clear;
if Form1.WebBrowser1.OleObject.Document.Frames.Length > 0 then begin
Form1.Memo1.Lines.Add('');
Form1.Memo1.Lines.Add('-----------------------------');
Form1.Memo1.Lines.Add('FRAMES bilgileri');
Form1.Memo1.Lines.Add('-----------------------------');
for i := 0 to Form1.WebBrowser1.OleObject.Document.Frames.Length - 1 do
begin
Form1.Memo1.Lines.Add( Format('WebBrowser1.OleObject.Document.Frames.Item(%d)', ) );
end;
end;

if Form1.WebBrowser1.OleObject.Document.Forms.Length > 0 then begin
Form1.Memo1.Lines.Add('');
Form1.Memo1.Lines.Add('-----------------------------');
Form1.Memo1.Lines.Add('FORMS bilgileri');
Form1.Memo1.Lines.Add('-----------------------------');
for i := 0 to Form1.WebBrowser1.OleObject.Document.Forms.Length - 1 do
begin
Form1.Memo1.Lines.Add( Format(' Form1.WebBrowser1.OleObject.Document.Forms.Item(%d).Document.Body.InnerHTML', ) );
for j := 0 to Form1.WebBrowser1.OleObject.Document.Forms.Item(i).Elements.Length - 1 do begin
Form1.Memo1.Lines.Add( Format(' Form1.WebBrowser1.OleObject.Document.Forms.Item(%d).Elements.Item(%d).Name -> ''%s'' ', [i, j, Form1.WebBrowser1.OleObject.Document.Forms.Item(i).Elements.Item(j).Name ]) );

Form1.Memo2.Lines.Add( Format(' Form1.WebBrowser1.OleObject.Document.Forms.Item(%d).Elements.Item(%d).id -> ''%s'' ', [i, j, Form1.EmbeddedWB1.OleObject.Document.Forms.Item(i).Elements.Item(j).id ]) );
end;
end;
end;
ShowMessage('Bitti');end;
Cevapla