Hi ..
Ich hab mich damit schon oft auseinander gesetzt und die folgende prozedur war vorher eigentlich mehrere einzelne.
Diese jedoch sollte eigentlich für jede art verschachtelter frames funktionieren. Falls es doch probleme gibt
musste einfach mal schreiben, oder versuchen sie selber zu korrigieren. Prinzipiell ist es nicht sonderlich kompliziert!
Code:
// Option Value:
// 0 -> Link --> Value = Aufschrift des Links (Name leer also '' lassen)
// 1 -> Button --> Value = Aufschrift des Buttons (Name leer lassen)
// 2 -> Eingabefeld --> Name = Name des Eingabefeldes
// Value = Was reingeschrieben werden soll
// 3 -> OptionFeld --> Name = Name des Selectionfeldes
// Value = Welcher Eintrag ausgewählt werden soll
// 4 -> RadioBox --> Not Yet
PROCEDURE HttpOwner(WebBrowser1:TWebBrowser; Option:Byte; Name:String; Value:String);
VAR ovElements: OleVariant;
PROCEDURE check(ovCheck: OleVariant);
Var k,i,h,l: Integer;
BEGIN
IF Option = 0 THEN
BEGIN
FOR h := 0 TO (ovCheck.Document.Links.Length - 1) DO
IF ovCheck.Document.Links.Item(h).InnerText = Value THEN
ovCheck.Document.Links.Item(h).Click;
END
ELSE
FOR k := 0 TO (ovCheck.Document.Forms.Length - 1) DO
BEGIN
ovElements := ovCheck.Document.Forms.Item(k).elements;
FOR i := 0 TO (ovElements.Length - 1) DO
CASE Option OF
1 : IF ((ovElements.Item(i).tagName = 'INPUT')
AND (ovElements.Item(i).type = 'submit')
AND (ovElements.Item(i).Value = Value)) THEN
ovElements.Item(i).Click;
2 : IF ((ovElements.Item(i).tagName = 'INPUT')
AND (ovElements.Item(i).name = Name)) THEN
ovElements.Item(i).value := Value;
3 : IF ((ovElements.Item(i).tagName = 'SELECT')
AND (ovElements.Item(i).name = Name)) THEN
FOR l := 0 TO ovElements.Item(i).length - 1 DO
IF ovElements.Item(i).options.item(l).Text = Value THEN
ovElements.Item(i).options.item(l).selected := True;
4 : ;
END;
END;
END;
PROCEDURE rec(ovFrames: OleVariant);
VAR j: Integer;
BEGIN
FOR j:=0 TO ovFrames.Length - 1 DO
IF ovFrames.Item(j).Document.Frames.Length > 1 THEN
rec(ovFrames.Item(j).Document.Frames)
ELSE
Check(ovFrames.Item(j));
END;
BEGIN
IF Webbrowser1.OleObject.Document.Frames.Length > 1 THEN
rec(Webbrowser1.OleObject.Document.Frames)
ELSE
check(Webbrowser1.OleObject);
END;
Musst dir dann halt nur den Namen des Input Feldes ausm quelltext suchen,
dann sollte es gehen.
Prinzipiell sollte es bei Ebay aber auch gehen, dass du direkt über die
url bietest,
oder?
MFG emploi