Hallo und Willkommen in der Delphi-PRAXis!
Vorgehen:
Den Quelltext der Seite betrachten und den relevanten Teil suchen.
(Wenn du im Quelltext nach "Mitgliedsname" suchst, findest du diesen Code schnell)
Code:
<form method="post" action="/passwort" id="login" onSubmit="javascript
:ssl();">
<div class="libo"><div style="height:10px"></div><div style="text-indent:8pt">Login:</div></div>
<div class="lib">
Mitgliedsname:
<input type="text" name="login[u]" class="libf">
Passwort:
<input type="password" name="login[p]" class="libf"><input type="submit" name="Submit" value="login">
[
url="/passwort"]Passwort vergessen?[/
url]
<input type="checkbox" id="ssl_login" checked>[
url="/infos/ssl/"]mit SSL-Verschlüsselung[/
url]
</div>
</form>
Der "Mitgliedsname" muss also in das Input Feld mit dem Namen login[u]
Das "Passwort" muss also in das Input Feld mit dem Namen login[p]
Dann gehen wir alle Forms und darin enthaltenen Items durch und überprüfen, ob
der Name des Feldes mit unseren Feldern übereinstimmt.
Delphi-Quellcode:
var
iForms, iItems: Integer;
FormItem: OleVariant;
FelddName: string;
begin
FeldName := 'login[u]';
// durch alle Forms iterieren
for iForms := 0 to WebBrowser.OleObject.Document.forms.Length - 1 do
begin
FormItem := WebBrowser.OleObject.Document.forms.Item(iForms);
// durch alle Form Items iterieren
for iItems := 0 to FormItem.Length - 1 do
begin
// überprüfen, ob der Name des Items mit unserem gesuchten Feldnamen übereinstimmt
if FormItem.Item(iItems).Name = FeldName then
begin
// Feld ausfüllen
FormItem.Item(iItems).Value := 'Mein Mitgliedsname';
end;
end;
end;
Verallgemeinert:
Delphi-Quellcode:
function WB_FillForm(WebBrowser: TWebBrowser; FieldName: string; sValue: string): Boolean;
var
iForms, iItems: Integer;
FormItem: OleVariant;
begin
Result := False;
for iForms := 0 to WebBrowser.OleObject.Document.forms.Length -1 do
begin
FormItem := WebBrowser.OleObject.Document.forms.Item(iForms);
for iItems := 0 to FormItem.Length -1 do
begin
try
if FormItem.Item(iItems).Name = FeldName then
begin
FormItem.Item(iItems).Value := sValue;
Result := True;
end;
except
end;
end;
end;
end;
Aufruf:
Delphi-Quellcode:
FillForm(Webbrowser1, 'login[u]','mein_Benutzername');
FillForm(Webbrowser1, 'login[p]','mein_Passwort');
Die FillForm Prozedur kann natürlich auch erweitert werden, so dass mehrere Felder auf einmal übergeben werden und so ein mehrfaches iterieren der Felder entfällt.
Zum Abschicken genügt in diesem Fall dieser Aufruf:
WebBrowser1.OleObject.Document.forms.item(0).elements.item(2).click;
Wichtig ist, dass die Felder erst dann ausgefüllt werden, wenn das Dokument im Webbrowser fertig geladen ist.