WebBrowserda tek button ile birden fazla otomatik tıklama

Delphi'de kod yazma ile ilgili sorularınızı bu foruma yazabilirsiniz.
Cevapla
McVeLeT
Üye
Mesajlar: 65
Kayıt: 22 May 2005 06:45
Konum: Bursa

WebBrowserda tek button ile birden fazla otomatik tıklama

Mesaj gönderen McVeLeT »

Merhaba arkadaşlar, tek button ile WebBrowser'da bir sayfayı yükletmek ve o sayfada açılan butonu nasıl tıklatabilirim?

Aşağıdaki örnek rasgele seçilmiş bir örnektir.

Mesela Buttona tıklandığında ilk önce aşağıdakini yapacak

Kod: Tümünü seç

WebBrowser1.Navigate('http://forum.programvadisi.com/ucp.php?mode=register');
Site yüklendiğinde aşağıdaki olayı yapacak.

Kod: Tümünü seç

WebBrowser1.OleObject.Document.GetElementByID('agreed').Click;
gibi gibi, o olaydan sonra formu doldurtmak v.s,

yukarıdakiler için yardımcı olursanız sevinirim..
Bazen sesini duyurabilmen için,
Susman gerekir...
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: WebBrowserda tek button ile birden fazla otomatik tıklam

Mesaj gönderen SimaWB »

Navigate ettikten sonra ReadyState özelliğini kontrol etmelisin ve bu özellik READYSTATE_COMPLETE oluncaya kadar beklemelisin;

Kod: Tümünü seç

while WebBrowser1.ReadyState <> READYSTATE_COMPLETE do
begin
  Sleep(1);
  Application.ProcessMessages;
end;
There's no place like 127.0.0.1
McVeLeT
Üye
Mesajlar: 65
Kayıt: 22 May 2005 06:45
Konum: Bursa

Re: WebBrowserda tek button ile birden fazla otomatik tıklam

Mesaj gönderen McVeLeT »

Çok teşekkür ederim, hızır gibisiniz aşağıdaki şekilde sorun halloldu.

Kod: Tümünü seç

begin
WebBrowser1.Navigate('http://forum.programvadisi.com/ucp.php?mode=register');
while WebBrowser1.ReadyState <> READYSTATE_COMPLETE do
begin
  Sleep(1);
  Application.ProcessMessages;


end;
WebBrowser1.OleObject.Document.GetElementByID('agreed').Click;
end;
Bazen sesini duyurabilmen için,
Susman gerekir...
McVeLeT
Üye
Mesajlar: 65
Kayıt: 22 May 2005 06:45
Konum: Bursa

Re: WebBrowserda tek button ile birden fazla otomatik tıklam

Mesaj gönderen McVeLeT »

Bir sorum daha var id si olmayanlar için click olayı nasıl olacak?

aşağıdaki resimde göründüğü gibi id yok, name kısmındaki "login" yazdığımda kabul etmiyor hata veriyor.

http://i.imgur.com/AWLfnKo.png


Bu bilgiye rastladım ama beceremedim :roll:
mrmarman yazdı:Merhaba...

ID'sine ulaşamadıysanız çalışan fonksiyonu siz çalıştırın.

Kod: Tümünü seç

    (WebBrowser1.Document as IHTMLDocument2).parentWindow.execScript( 'openLoginPopup()', 'JavaScript' ); // Uses MSHTML eklenecek
kısacası login olmak için ne yapmak gerekir?
http://forum.programvadisi.com/posting. ... =post&f=24


Aşağıdaki şekilde olmuyor

Kod: Tümünü seç

webbrowser1.OleObject.Document.GetElementByID('login').Value:=edit1.Text;

webbrowser1.OleObject.Document.GetElementByID('passwd').Value:=edit2.Text;

webbrowser1.OleObject.Document.GetElementByID('login').Click;
Bazen sesini duyurabilmen için,
Susman gerekir...
McVeLeT
Üye
Mesajlar: 65
Kayıt: 22 May 2005 06:45
Konum: Bursa

Re: WebBrowserda tek button ile birden fazla otomatik tıklam

Mesaj gönderen McVeLeT »

Mrmarman sorunumu halletti çok şükür

Kod: Tümünü seç

//edit alanları 
procedure VeriGir( WebBrowser:TWebBrowser; strName, strVeri:String );
var
  Doc               : IHTMLDocument2;
  TumAlanlar        : IHTMLElementCollection;
  VeriGirisInput    : IHTMLInputElement;
  iSayac            : Integer;
begin
  if Assigned(WebBrowser.Document) then
  begin
    Doc               := WebBrowser.Document as IHTMLDocument2;
    TumAlanlar        := Doc.body.all as IHTMLElementCollection;
    if TumAlanlar <> Nil then
    begin // listemiz hazır demektir.
      for iSayac := 0 to TumAlanlar.Length - 1 do
      begin
        if ( TumAlanlar.Item(iSayac, EmptyParam) as IHTMLElement ).TagName = 'INPUT' then
        begin // Edit Alanıdır. // <input ile başlayan
          VeriGirisInput := ( TumAlanlar.Item(iSayac, EmptyParam) as IHTMLElement ) as IHTMLInputElement;
          if VeriGirisInput.Name = strName then VeriGirisInput.Value := strVeri;


        end;
      end;
    end;
  end;
end;
//edit alanları

////button click
procedure ButonClick( WebBrowser:TWebBrowser; strName:String );
var
  Doc               : IHTMLDocument2;
  TumAlanlar        : IHTMLElementCollection;
  Button            : HTMLInputElement;
  iSayac            : Integer;
begin
  if Assigned(WebBrowser.Document) then
  begin
    Doc               := WebBrowser.Document as IHTMLDocument2;
    TumAlanlar        := Doc.body.all as IHTMLElementCollection;
    if TumAlanlar <> Nil then
    begin // listemiz hazır demektir.
      for iSayac := 0 to TumAlanlar.Length - 1 do
      begin
        if ( TumAlanlar.Item(iSayac, EmptyParam) as IHTMLElement ).TagName = 'INPUT' then
        begin
          Button := ( TumAlanlar.Item(iSayac, EmptyParam) as IHTMLElement ) as  HTMLInputElement;
          if  Button.Name = strName then begin
            Button.click;
            Break;
          end;
        end;
      end;
    end;
  end;
end;
//button click 

procedure TForum_Tanitim.AdvGlowButton2Click(Sender: TObject);
begin

 WebBrowser1.Silent := True;
  WebBrowser1.Navigate( 'http://forum.programvadisi.com/posting.php?mode=post&f=24' );
  while WebBrowser1.ReadyState <> READYSTATE_COMPLETE do
  begin
    Sleep(1);
    Application.ProcessMessages;
  end;
  VeriGir( WebBrowser1, 'username', Edit1.Text );
  VeriGir( WebBrowser1, 'password', Edit2.Text );
  ButonClick( WebBrowser1, 'login' );
 
end;
Bazen sesini duyurabilmen için,
Susman gerekir...
Kullanıcı avatarı
SimaWB
Üye
Mesajlar: 1316
Kayıt: 07 May 2009 10:42
Konum: İstanbul
İletişim:

Re: WebBrowserda tek button ile birden fazla otomatik tıklam

Mesaj gönderen SimaWB »

Bir form'la ilgili çalışma yapacaksanız document.Forms ve IHTMLFormElement kullanabilirsiniz.

Kod: Tümünü seç

var
  forms: IHTMLElementCollection;
  form : IHTMLFormElement;
  field1, field2: IHTMLElement;
begin
  forms := doc.Forms as IHTMLElementCollection;
  form := forms.item(Index,0) as IHTMLFormElement;//Kaçıncı formu kullanacaksanız Index olarak onu girin (Sıfırdan başlıyor).
// forms.length sayfadaki form sayısını verir
// form.length ise form içinde elemanların sayısını verir
  field1 := form.item(0, '') as IHTMLElement;//form içindeki ilk eleman
  field2 := form.item(1, '') as IHTMLElement;//form içindeki ikinci eleman
//
  form.submit; //formu submit etmek için. yani submit butonuna basmak için
//
There's no place like 127.0.0.1
Cevapla