Einzelnen Beitrag anzeigen

Benutzerbild von sx2008
sx2008

Registriert seit: 15. Feb 2008
Ort: Baden-Württemberg
2.332 Beiträge
 
Delphi 2007 Professional
 
#4

AW: TWebBrowser - zwei Formulare nacheinander ausfüllen

  Alt 2. Nov 2012, 18:29
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 = 'SUBMITthen
      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';
  Mit Zitat antworten Zitat