Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Webbrowser / abzuarbeitene Reihenfolge (https://www.delphipraxis.net/113572-webbrowser-abzuarbeitene-reihenfolge.html)

Firewing 10. Mai 2008 09:47


Webbrowser / abzuarbeitene Reihenfolge
 
Hallo Leute, wieder einmal brauche ich eure Hilfe.
Und zwar möchte ich, dass der Webbrowser folgende Schritte durchführt.

Schritt 1: Seite mit LoginFormular ausfüllen und abschicken
Schritt 2: Zu einer Seite im Mitgliederbereich wechseln
Schritt 3: HTML Quelltext speichern und in Memo ausgeben

Delphi-Quellcode:
procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
begin
  if DumpStep = 1 then
    begin
      WB_FillPwdForm(Webbrowser1, 'Login_email', StudiUser, 'Login_password', StudiPW);
      webbrowser1.oleobject.document.forms.item('Login').elements.item('login').click;
      DumpStep := 2;
    end;
  if DumpStep = 2 then
    begin
      webbrowser1.Navigate(Edit1.text);
      DumpStep := 3;
    end;
  if (DumpStep = 3) then
    begin
      WB_SaveHTMLCode(Webbrowser1, ExtractFilePath(Paramstr(0)) + '\temp\quelltext.txt');
      ListBox1.Items.Add('[' + TimeToStr(now) + ']' + ' Temp-Datei für den Quelltext angelegt');
      WB_GetHTMLCode(Webbrowser1, Memo1.Lines);
      ListBox1.Items.Add('[' + TimeToStr(now) + ']' + ' Quelltext geöffnet');
      DumpStep := 4;
    end;
end;
Nun gibt er mir aber bereits den Quelltext bei Schritt 1 aus. Wo liegt das Problem? Hat da jemand ne Lösung, evtl eine grundlegende Verbesserung? Mir scheint, dass ich das eh unglücklich programmiert habe...

Die Muhkuh 10. Mai 2008 09:56

Re: Webbrowser / abzuarbeitene Reihenfolge
 
Delphi-Quellcode:
procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
begin
  if DumpStep = 1 then
    begin
      WB_FillPwdForm(Webbrowser1, 'Login_email', StudiUser, 'Login_password', StudiPW);
      webbrowser1.oleobject.document.forms.item('Login').elements.item('login').click;
      DumpStep := 2;
    end
  else
  if DumpStep = 2 then
    begin
      webbrowser1.Navigate(Edit1.text);
      DumpStep := 3;
    end
  else
  if (DumpStep = 3) then
    begin
      WB_SaveHTMLCode(Webbrowser1, ExtractFilePath(Paramstr(0)) + '\temp\quelltext.txt');
      ListBox1.Items.Add('[' + TimeToStr(now) + ']' + ' Temp-Datei für den Quelltext angelegt');
      WB_GetHTMLCode(Webbrowser1, Memo1.Lines);
      ListBox1.Items.Add('[' + TimeToStr(now) + ']' + ' Quelltext geöffnet');
      DumpStep := 4;
    end;
end;
Versuch das mal mit else if. Ansonsten wird jede Abfrage ausgeführt.

Firewing 10. Mai 2008 10:42

Re: Webbrowser / abzuarbeitene Reihenfolge
 
D'OH! Oh man klar, wie kann man...Dank' Dir!

Firewing 10. Mai 2008 11:28

Re: Webbrowser / abzuarbeitene Reihenfolge
 
OK Bonusfrage:

Und zwar habe ich eine Abfolge von zu aufrufenden Seiten, jedoch soll er den Schritt 2 wiederholen (sodass i mit einer For-Schleife hochzählt). Also:

Delphi-Quellcode:
For i := 0 to 7 do

Bilder_Seite_1.htm aufrufen -> Schritt3 machen
Bilder_Seite_2.htm aufrufen -> Schritt3 machen
Bilder_Seite_3.htm aufrufen -> Schritt3 machen
...
Bilder_Seite_7.htm aufrufen -> Schritt3 machen

Wollte das halt ungern durch ne GoTo Funktion erledigen. Kannst du/ihr mir mal aushelfen?
(Bei mir kommt er mit den OnDocumentComplete Ereignis ins Gehege)


procedure TForm1.WebBrowser1DocumentComplete(Sender: TObject;
  const pDisp: IDispatch; var URL: OleVariant);
begin
  if DumpStep = 1 then
    begin
      WB_FillPwdForm(Webbrowser1, 'Login_email', StudiUser, 'Login_password', StudiPW);
      webbrowser1.oleobject.document.forms.item('Login').elements.item('login').click;
      DumpStep := 2;
    end
  else
  if DumpStep = 2 then
    begin
      webbrowser1.Navigate(Edit1.text + 'i' + '.htm');
      DumpStep := 3;
    end
  else
  if (DumpStep = 3) then
    begin
          WB_SaveHTMLCode(Webbrowser1, ExtractFilePath(Paramstr(0)) + '\temp\quelltext.txt');
          ListBox1.Items.Add('[' + TimeToStr(now) + ']' + ' Temp-Datei für den Quelltext angelegt');
          WB_GetHTMLCode(Webbrowser1, Memo1.Lines);
          ListBox1.Items.Add('[' + TimeToStr(now) + ']' + ' Quelltext geöffnet');
          //.....
    end;
end;

toms 11. Mai 2008 09:46

Re: Webbrowser / abzuarbeitene Reihenfolge
 
Hallo,

Du könntest es auch mit Hier im Forum suchenWaitForBrowser machen.

PseudoCode:

Delphi-Quellcode:
LoginCode()
WaitForBrowser();
repeat
  Navigate()
  WaitForBrowser();
  SaveHTMLCode()
until ...


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:05 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