Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi TWebBrowser manipulieren??? (https://www.delphipraxis.net/117812-twebbrowser-manipulieren.html)

vit4l 25. Jul 2008 12:10


TWebBrowser manipulieren???
 
Hallo,
ich habe ein Problem, vielleicht weiss jemand weiter.
Ich lade eine Webseite in ein TWebBrowser. Auf der geladenen Seite gibt es zwei ComboBoxen. Dabei reagiert die zweite ComboBox auf die Änderungen, die mit der ersten ComboBox vorgenommen werden. Wenn mann in der ersten ComboBox etwas auswählt, werden entsprechende Optionen in die zweite ComboBo geladen. Die Seite wird dabei nich aktualisiert. Aus der Quellcode der Seite sehe ich, dass es ein JavaScript ausgeführt wird (OnChange), wenn man eine Option aus der ersten ComboBox wählt. Soweit klar.

Nun möchte ich die Auswahl einer Option in der ersten ComboBox simulieren. Dabei führe ich mithilfe der Funktion ExecuteScript den JavaScript aus, das im normalen Fall bei der Auswahl einer Option ausgeführt wird. Dann möchte ich die in die zweite ComboBox geladenen Optionen in einer Schleife auslesen.

Leider ist das Problem, dass nicht immer die Richtige Option der zweiten KomboBox für die entsprechende Option der ersten KomboBox in meine TStringListe geschrieben werden.

Delphi-Quellcode:
var
  i, iMax, s, fMax, f: integer;
  strNameOption, strValue: string;
  TempDocument: IHTMLDocument2;
begin
  iMax := Form1.webBrowser1.OleObject.Document.Forms.Item(1).Elements.Item(WideString('makeVariant1.makeId')).Length;
  for i := 1 to iMax - 1 do
  begin
    strNameOption:= Form1.webBrowser1.OleObject.Document.Forms.Item(1).Elements.Item(WideString('makeVariant1.makeId')).Item(i).Text;
    strValue := Form1.webBrowser1.OleObject.Document.Forms.Item(1).Elements.Item(WideString('makeVariant1.makeId')).Item(i).value;
    Form1.webBrowser1.OleObject.Document.Forms.Item(1).Elements.Item(WideString('makeVariant1.makeId')).value := strValue;
    TempDocument := Form1.webBrowser1.Document as IHTMLDocument2;
    ExecuteScript(TempDocument, 'retrieveOption(' + strValue + ', "1")', 'JavaScript');
    Application.ProcessMessages;
    fMax := Form1.webBrowser1.OleObject.Document.Forms.Item(1).Elements.Item(WideString('makeVariant1.variantId')).Length;
    for f := 0 to fMax - 1 do
    strNameOption:= strNameOption+ ',' + Form1.webBrowser1.OleObject.Document.Forms.Item(1).Elements.Item(WideString('makeVariant1.variantId')).Item(f).Text;
    vlstListe.Add(strNameOption);
  end;
    vlstListe.SaveToFile('C:\test.txt');
    showMessage('wurde gespeichert....');
end;
Vielen Dank schon mal im Vorraus für eure Hilfe...

toms 26. Jul 2008 05:39

Re: TWebBrowser manipulieren???
 
Hallo, könnte es sein, dass das Script noch nicht fertig ausgeführt wurde, zum Zeitpunkt wo du auf die 2. Combobox zugreifst?

vit4l 1. Aug 2008 12:09

Re: TWebBrowser manipulieren???
 
Hallo Toms,
nein das kann nicht sein, da ich es jetzt bevor ich den Inhalt auslese erstmal überprüfe ob der Skript ausgeführt wurde, ich glaube es liegt einfach an der Komponente TWebBrowser. Naja trotzdem vielen Dank für dein Interesse.


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