Entwickler-Ecke
Sonstiges (Delphi) - Submit Button im Browser anklicken !
admiralkirk - So 02.11.08 16:37
Titel: Submit Button im Browser anklicken !
Ich möchte auf der Seite
http://www.google.de den "Auf gut Glück" Button anklicken.
Dazu öffne ich einfach mit ShellExecute den browser unter
http://www.google.de
Was ich ausprobiert habe:
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39:
| unit Unit3;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ShellApi, StdCtrls, ImgList, ExtCtrls;
type TForm3 = class(TForm) Button1: TButton; procedure Button1Click(Sender: TObject); procedure XPColorMap1ColorChange(Sender: TObject); private public end;
var Form3: TForm3;
implementation
{$R *.dfm}
procedure TForm3.Button1Click(Sender: TObject); begin ShellExecute(Application.Handle, nil , 'http://google.de/', nil, nil, SW_SHOWNORMAL); sleep(2500); Keybd_Event (VK_TAB, 1, 0, 0); sleep(20); Keybd_Event (VK_TAB, 1, 0, 0); sleep(100); Keybd_Event (VK_RETURN, 1, 0, 0); sleep(1500); close(); end; end. |
Funktioniert super mit Mozilla Firefox und auch mit IE. Aber nicht mit einem Script da die Anzahl der zu drückenden Tabs unterschiedlich sind ...
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47: 48:
| unit Unit4;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, ShellApi, StdCtrls, ImgList, SHDocVw, ActiveX, ComObj, ExtCtrls, mshtml;
type TForm4 = class(TForm) Button1: TButton; Image1: TImage; procedure Button1Click(Sender: TObject); procedure Image1Click(Sender: TObject); private public end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm4.Button2Click(Sender: TObject); begin var vDoc, vForm, vElem: OleVariant; begin WebBrowser1.Navigate('http://google.de/'); repeat Application.ProcessMessages; until WebBrowser1.ReadyState >= READYSTATE_COMPLETE; vDoc := WebBrowser1.OleObject.document; vElem := vDoc.getElementById('btnI'); if VarIsNull(vElem) then ShowMessage('Element "btnI" not found') else vElem.click; end; procedure TForm4.Image1Click(Sender: TObject); begin
end;
end. |
Funktioniert nich da ein paar Befehle, wie button2Click, var, WebBrowser1.Navigate rot unterstrichen sind !
Den Code habe ich GEFUNDEN ! Nicht meiner ...
Hier also meine frage, funktioniert der 2. Code indem ich etwas ändere oder gibt es eine andere Möglichkeit den Button direkt anzuklicken ohne Maussteurung etc was bei jedem PC bzw Browser unterschiedlich sein kann ?
Danke im Vorraus
mfg
AdmiralKirk
Bob Murphy - So 02.11.08 21:34
Damit kannste den Button klicken.
Delphi-Quelltext
1:
| WebBrowser1.OleObject.document.forms.item(0).elements.item('btnI').click; |
admiralkirk - Mo 03.11.08 19:16
Bob Murphy hat folgendes geschrieben : |
Damit kannste den Button klicken.
Delphi-Quelltext 1:
| WebBrowser1.OleObject.document.forms.item(0).elements.item('btnI').click; | |
Könntest du mir einen vollständigen Quelltext posten.
Das problem bei mir ist, dass ich diesen Befehl schon öfters gesehen habe und ich nicht genau weiss was in uses und in die deklaration kommt, damit es einwandfrei funktioniert.
Danke im Vorraus
admiralkirk - Mo 03.11.08 21:50
Kann denn keiner dieses einfache problem lösen ?
Bitte postet mir einen kompletten code mit dem command:
Bob Murphy hat folgendes geschrieben : |
Damit kannste den Button klicken.
Delphi-Quelltext 1:
| WebBrowser1.OleObject.document.forms.item(0).elements.item('btnI').click; | |
Da ich nicht weiss was alles drin stehen muss, damit zb die WebBrowser1 funktion oder OleObject funktioniert
Danke im Vorraus !
Xentar - Mo 03.11.08 21:57
Du brauchst die entsprechende Komponente, eine TWebbrowser, auf deinem Formular
admiralkirk - Mo 03.11.08 22:06
Ich habe das schon in so vielen delphi foren gepostet und keine antwort auf meine eigentliche frage bekommen ...
Ich kenne mich mit delphi noch nicht so gut aus und frage ob ein wissender mir kurz ein kompletten code posten kann ...
der dürfte ja net allzu groß sein ...
von Unit# ... bis end;
Danke, .. hoffentlich
mfg
admiralkirk
Xentar - Mo 03.11.08 22:47
Das IST der komplette Code.
Du brauchst nun nur noch einen TWebbrowser und von mir aus 2 Buttons.
Im einen Button schreibst du
Delphi-Quelltext
1:
| Webbrowser1.Navigate('www.google.de'); |
um Google zu öffnen.
Im anderen den Code von oben.
Edit:
Nagut, wenn du meinst, dass es dir weiterhilft:
Aber mehr als Zeilen 31 und 36 muss man nicht selber schreiben.
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39:
| unit Unit1;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, OleCtrls, SHDocVw, StdCtrls;
type TForm1 = class(TForm) Button1: TButton; Button2: TButton; WebBrowser1: TWebBrowser; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); private public end;
var Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject); begin WebBrowser1.Navigate('www.google.de'); end;
procedure TForm1.Button2Click(Sender: TObject); begin WebBrowser1.OleObject.document.forms.item(0).elements.item('btnI').click; end;
end. |
admiralkirk - Mo 03.11.08 23:13
vielen dank endlich einer der mir hilft xD
werds gleich mal ausprobieren
admiralkirk - Mo 03.11.08 23:17
mmh ich habe jez genau alles gemacht wie du es geschrieben hast, das programm zeigt keine fehlermeldung oder ähnliches.
startet ganz normal, aber wenn ich auf die buttons klicke passiert nichts, ist das normal ?
Müsste google in dem Webbrowser fenster auf der form angezeigt werden, im normalen oder garnicht?
Sieht man was das programm im browser macht ?
Xentar - Mo 03.11.08 23:30
Hast du verstanden, was der Code macht?
Man klickt auf den ersten Button -> Google wird im Programm angezeigt -> man tippt nen Suchbegriff ein -> klickt auf Button 2
Bob Murphy - Mo 03.11.08 23:36
hast du den webbrowser auch auf einer sichtbaren größe gestellt? zb 500 x 500
und ja google wird dann im webbrowser (der auf der form) angezeigt
edit//
hast du den internet explorer von windows drauf?
admiralkirk - Mo 03.11.08 23:48
Ich habe auf meinem pc IE 7 und Mozilla Firefox installiert
Ich habe jetzt auf meiner form den Webbrowser um die 800x800 groß gemacht.
Alles was ich sehe wenn ich auf den navigate button klicke ist weiss, es verändert sich nichts
Bob Murphy - Mo 03.11.08 23:55
je nach internetverbindung kann es ein wenig dauern bis du google angezeigt bekommst.
hast du vielleicht eine firewall die dein programm den zugang zum internet verweigert?
Xentar - Mo 03.11.08 23:56
Kommst du mit dem IE7 normal ins Internet?
Hast du eine Firewall?
admiralkirk - Di 04.11.08 00:00
mmh ich habe zonealarm
ich habe mehr als 20 sec gewartet zum aufbauen der seite
ich schau mal wegen der firewall
admiralkirk - Di 04.11.08 00:10
Egal was ich mache es wird nur weiss angezeigt.
Firewall ist aus + programm zugelassen.
Habe 1 min gewartet nichts tut sich
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14: 15: 16: 17: 18: 19: 20: 21: 22: 23: 24: 25: 26: 27: 28: 29: 30: 31: 32: 33: 34: 35: 36: 37: 38: 39: 40: 41: 42: 43: 44: 45: 46: 47:
| unit Unit8;
interface
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, OleCtrls, SHDocVw, StdCtrls;
type TForm8 = class(TForm) Button1: TButton; Button2: TButton; WebBrowser1: TWebBrowser; Button3: TButton; procedure Button1Click(Sender: TObject); procedure Button2Click(Sender: TObject); procedure Button3Click(Sender: TObject); private public end;
var Form8: TForm8;
implementation
{$R *.dfm}
procedure TForm8.Button1Click(Sender: TObject); begin WebBrowser1.Navigate('www.google.de'); end;
procedure TForm8.Button2Click(Sender: TObject); begin WebBrowser1.OleObject.document.forms.item(0).elements.item('btnI').click; end;
procedure TForm8.Button3Click(Sender: TObject); begin close; end;
end. |
//Meine Form
[url=
http://img385.imageshack.us/my.php?image=form8kd8.jpg]
[/URL][url=
http://g.imageshack.us/thpix.php]
[/URL]
Xentar - Di 04.11.08 00:24
Mal ne blöde Frage:
Delphi-Quelltext
1:
| procedure TForm8.Button1Click(Sender: TObject); |
Wie hast du diese Zeile da reinbekommen? Hast du sie einfach per Copy & Paste eingefügt?
admiralkirk - Di 04.11.08 00:26
ne
//edit
über die form ganz normal
Xentar - Di 04.11.08 00:28
Lad mal bitte das ganze Projekt (ohne Exe!) als Zip Datei hier hoch..
da stimmt doch was nicht.
Edit: Wieso heißt das Ding eigentlich schon Form8? Bist du sicher, dass du mit dem richtigen Formular arbeitest?
admiralkirk - Di 04.11.08 00:35
Wooho ich habs nach 2 tagen xD endlich
Vielen danke für deine bemühungen und deine Ausdaur mit mir :)
Tausend dank.
Der fehler war einfach, das es verschiedene Delphi version gibt.
Mit OleVariant geht es perfekt
hier der link
http://www.delphipraxis.net/topic68127.html
admiralkirk - Di 04.11.08 00:43
mmh jez hätte ich doch noch mal ne frage ...
könnte man den button auch nach dem value anklicken, also das was draufsteht und nicht nach name bzw id ?
und nochmals danke für deine bemühungen und deine geduld xD
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!