![]() |
twebbrowser auf einen button klicken...
Hi,
ich möchte auf einen Butten klicken, im Webbrowser klicken. html code:
Code:
Dieser Button befindet sich in einem Frame namens "mainframe".
<input type="image" src="../login.jpg" alt="Login" class="loginButton" name="button" id="button" onmouseover="document.getElementById('button').src='../login2.jpg';" onmouseout="document.getElementById('button').src='../login.jpg';">
Bis jetzt habe ich folgendes versucht: Direkt über den (oder das?) Frame auf den Dutton zu klicken
Delphi-Quellcode:
Dann habe ich erst den Frame geladen und dann habe ich versucht auf den button zu klicken:
Web.OleObject.Document.Frames.item('mainframe').Document.Forms.item(0).Elements.item('button').click;
Delphi-Quellcode:
Danach habe ich noch versucht auf das Bild zu klicken...
doc := Web.Document as IHTMLDocument3;
doc.getElementsByName('button').click;
Delphi-Quellcode:
und das selbe nochmal direkt über den Frame!
for i:=0 to WebBrowser.OleObject.Document.Images.length-1 do
begin WebBrowser.OleObject.Document.Images.Item(i).click; end; Das alles hat aber nicht funktioniert... warum? mfg gandime |
Re: twebbrowser auf einen button klicken...
Hallo,
schau dir bitte Indy an. Mit TWebbrowser hatte ich auch meine Probleme. Punkto: hängen bleiben, manchmal ging es nicht, ... |
Re: twebbrowser auf einen button klicken...
ja nee mit idhttp is das prob das die seite nicht geladen wird sonder nur der quellcode angezeigt wird was mir nichts bringt wenn ich nur verschlüsselten text sehe...
|
Re: twebbrowser auf einen button klicken...
Guten Morgen.
Zitat:
Wie hast du sicher gestellt, dass die Seite vollständig geladen wurde, bevor du die Methode Click des Images aufrufst? Der gezeigte Code sieht für sich genommen nicht verdächtig aus. Grüße vom marabu |
Re: twebbrowser auf einen button klicken...
also hier mal mein code:
Delphi-Quellcode:
joa iwie komme ich nicht weiter...
begin
Web.navigate('http://xyz.de/'); if warten then begin Web.OleObject.Document.Frames.item('mainframe').Document.Forms.item(0).Elements.item('login').value:='user'; Web.OleObject.Document.Frames.item('mainframe').Document.Forms.item(0).Elements.item('pass').value:='pw'; showmessage(inttostr(Web.OleObject.Document.Images.Length)); // ergebnis: 0 end; end; function TForm1.warten:boolean; begin repeat Sleep(50); Application.ProcessMessages; until (b_web_f=true) or (Application.Terminated); b_web_f:=false; result:=true; end; procedure TForm1.WebDocumentComplete(ASender: TObject; const pDisp: IDispatch; var URL: OleVariant); var CurWebrowser: IWebBrowser; TopWebBrowser: IWebBrowser; begin b_web_f:=false; CurWebrowser := pDisp as IWebBrowser; TopWebBrowser := (ASender as TWebBrowser).DefaultInterface; if CurWebrowser = TopWebBrowser then begin b_web_f:=true; showmessage('haupt'); end else begin // showmessage('sub'); end; end; |
Re: twebbrowser auf einen button klicken...
Hallo,
warum kombinierst du Busy Waiting mit dem Browser Event OnDocumentComplete()? Du brauchst eigentlich nur eines von beidem und das Event ist dabei die elegantere Lösung. Aber auch wenn du Busy Waiting bevorzugst, benötigst du keine globale Variable b_web_f - die Komponente TWebBrowser stellt dir bereits die Eigenschaft ReadyState zur Verfügung. Bei deinem aktuellen Code musst du unbedingt darauf achten, dass b_web_f beim ersten Aufruf der Funktion Warten() auf False initialisiert ist, da sonst einfach nur 50 Millisekunden gewartet wird und dann auf die noch nicht fertige Seite zugegriffen wird. Diese Initialisierung würde ich dann beim Ereignis OnBeforeNavigate2() erledigen, aber noch besser geht es ganz ohne diese Variable. Welcher Fehler kommt den nun bei dir - und an welcher Stelle? Freundliche Grüße |
Re: twebbrowser auf einen button klicken...
es kommt kein fehler ich weiss blos nicht wie ich den oben beschiebenen Button anklicke!
|
Re: twebbrowser auf einen button klicken...
Hallo,
wenn es nur um das Auslösen der Form-Action geht, dann schau mal im Thread ![]() Freundliche Grüße |
Re: twebbrowser auf einen button klicken...
damit geht es auch nicht
ab
Delphi-Quellcode:
dem punkt geht es nicht weiter
procedure TForm1.click_pic(s_pic:string);
var iDoc: IHtmlDocument2; i: integer; ov: OleVariant; iDisp: IDispatch; iColl: IHTMLElementCollection; InputImage: HTMLInputImage; begin Web.ControlInterface.Document.QueryInterface(IHtmlDocument2, iDoc); if not Assigned(iDoc) then begin Exit; end; ov := 'INPUT'; iDisp := iDoc.all.tags(ov); if Assigned(IDisp) then begin IDisp.QueryInterface(IHTMLElementCollection, iColl); if Assigned(iColl) then begin for i := 1 to iColl.Get_length do //iColl.Get_length=0 worduch es nicht weiter geht begin iDisp := iColl.item(pred(i), 0); iDisp.QueryInterface(HTMLInputImage, InputImage); if Assigned(InputImage) then begin if InputImage.Name=s_pic then // if the name is submit / falls der name submit lautet begin InputImage.Click; // click it / klick es end; end; end; end; end; end; edit: habs erst mit der ganzen Seite versucht wenn ich direkt den Frame lade geht es danke :-) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:07 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz