Um darauf zu warten, dass eine Webseite komplett geladen ist würde ich folgenden Code verwenden:
Delphi-Quellcode:
procedure WaitForBrowser(WebBrowser:TWebBrowser);
begin
while WebBrowser.ReadyState <> READYSTATE_COMPLETE do
begin
Application.ProcessMessages;
Sleep(50);
end;
end;
Manchmal funktioniert das Submitten eines Webformulars nicht richtig; man kann das so umgehen:
Delphi-Quellcode:
procedure SubmitWebForm(webform:OleVariant);
var
i : Integer;
formitem : OleVariant;
itemtype, itemname : string;
begin
// Schleife über alle Items eines WebFormulars
For i:= webform.Length-1 downto 0 do
begin
formitem := webform.Item(i);
itemtype := UpperCase(formitem.Type);
itemname := UpperCase(formitem.Name);
// if it's a submit button: click it
if itemtype = 'SUBMIT' then
begin
formitem.Click;
Exit;
end
else if (itemtype='BUTTON') and (itemname='SUBMIT') then
begin
formitem.Click;
Exit;
end
end;
// try default submit Method
webform.submit;
end;
Um zu prüfen, ob ein Variant ein Dispatch-Interface enthält:
Delphi-Quellcode:
function VarIsDispatchObject(const v : Variant): Boolean;
var
vt : Integer;
begin
vt := VarType(v) and not varByRef;
Result := (vt = varDispatch);
end;
Damit sieht der Test so aus:
Delphi-Quellcode:
x := br.OleObject.document.forms.item('
input');
if not VarIsDispatchObject(x)
then
raise Exception.CreateFmt('
Web-Formalar %s nicht gefunden', ['
input']);
x.Elements.Item('
serial').value := '
24520';