AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Netzwerke Delphi twebbrowser auf einen button klicken...
Thema durchsuchen
Ansicht
Themen-Optionen

twebbrowser auf einen button klicken...

Ein Thema von gandime · begonnen am 7. Jun 2007 · letzter Beitrag vom 10. Jun 2007
Antwort Antwort
gandime
(Gast)

n/a Beiträge
 
#1

twebbrowser auf einen button klicken...

  Alt 7. Jun 2007, 12:56
Hi,
ich möchte auf einen Butten klicken, im Webbrowser klicken.
html code:
Code:
<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';">
Dieser Button befindet sich in einem Frame namens "mainframe".
Bis jetzt habe ich folgendes versucht:
Direkt über den (oder das?) Frame auf den Dutton zu klicken
Web.OleObject.Document.Frames.item('mainframe').Document.Forms.item(0).Elements.item('button').click; Dann habe ich erst den Frame geladen und dann habe ich versucht auf den button zu klicken:
Delphi-Quellcode:
doc := Web.Document as IHTMLDocument3;
doc.getElementsByName('button').click;
Danach habe ich noch versucht auf das Bild zu klicken...
Delphi-Quellcode:
for i:=0 to WebBrowser.OleObject.Document.Images.length-1 do
begin
  WebBrowser.OleObject.Document.Images.Item(i).click;
end;
und das selbe nochmal direkt über den Frame!

Das alles hat aber nicht funktioniert...
warum?

mfg
gandime
  Mit Zitat antworten Zitat
WebtoolMaster

Registriert seit: 8. Jun 2007
19 Beiträge
 
#2

Re: twebbrowser auf einen button klicken...

  Alt 8. Jun 2007, 14:33
Hallo,

schau dir bitte Indy an.
Mit TWebbrowser hatte ich auch meine Probleme.
Punkto: hängen bleiben, manchmal ging es nicht, ...
  Mit Zitat antworten Zitat
gandime
(Gast)

n/a Beiträge
 
#3

Re: twebbrowser auf einen button klicken...

  Alt 10. Jun 2007, 01:32
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...
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#4

Re: twebbrowser auf einen button klicken...

  Alt 10. Jun 2007, 08:25
Guten Morgen.

Zitat:
... Das alles hat aber nicht funktioniert ...
Mich würde interessieren, was genau passierte. Gab es Fehlermeldungen?

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
  Mit Zitat antworten Zitat
gandime
(Gast)

n/a Beiträge
 
#5

Re: twebbrowser auf einen button klicken...

  Alt 10. Jun 2007, 11:57
also hier mal mein code:

Delphi-Quellcode:
  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;
joa iwie komme ich nicht weiter...
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#6

Re: twebbrowser auf einen button klicken...

  Alt 10. Jun 2007, 12:59
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
  Mit Zitat antworten Zitat
gandime
(Gast)

n/a Beiträge
 
#7

Re: twebbrowser auf einen button klicken...

  Alt 10. Jun 2007, 18:27
es kommt kein fehler ich weiss blos nicht wie ich den oben beschiebenen Button anklicke!
  Mit Zitat antworten Zitat
marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#8

Re: twebbrowser auf einen button klicken...

  Alt 10. Jun 2007, 19:06
Hallo,

wenn es nur um das Auslösen der Form-Action geht, dann schau mal im Thread image submit druecken vorbei - mir scheint, dass dein Fall ähnlich gelagert ist.

Freundliche Grüße
  Mit Zitat antworten Zitat
gandime
(Gast)

n/a Beiträge
 
#9

Re: twebbrowser auf einen button klicken...

  Alt 10. Jun 2007, 19:31
damit geht es auch nicht
ab
Delphi-Quellcode:
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;
dem punkt geht es nicht weiter

edit:
habs erst mit der ganzen Seite versucht wenn ich direkt den Frame lade geht es


danke
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 21:08 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz