HI alle zusammen
Sorry bin gestern plötzlich weggeknackt
Also @ Volker:
Wichtig wäre ja nur das die
URL nach dem Login nicht mehr die gleiche ist, oder? Damit der Code in OnDocument Complete nur 1x ausgeführt wird.
Und wenn ich das korrekt sehe, passiert das auch so. Der Code wird 1x ausgeführt dann bin ich eingeloggt. Und dannach möchte ich ja mit dem Button1 die Felder füllen. (Was bis jetzt leider noch immer nicht klappt)
URL der Login Form:
http://www1.sunrise.ch/SMS-Sender-cb...de_CH-CHF.html
URL nach dem Login:
https://www1.sunrise.ch/is-bin/INTER...LoginProcess=1
@Nahpets
Sorry für die Verwirrung. Für das Login von dem wir hier sprechen, werden nur folgende Teile des Codes benutzt (Das was du meinst, wird nur bei einem anderen Server (
www.bern-web.ch) angewendet (Wenn die Combobox auf itemindex 2 wäre))
1. Ich klicke den Button an um auf das Login Formular zu gelangen:
Delphi-Quellcode:
if combobox2.ItemIndex=2 then webbrowser1.Navigate('http://www.bern-web.ch/');
if combobox2.ItemIndex=1 then webbrowser1.Navigate('http://www1.sunrise.ch/SMS-Sender-cbBpfAqFI.RUoAAAEwinJTNyCu-Sunrise-Residential-Site-WFS-de_CH-CHF.html');
progressbar1.Position:=25;
2. Sobald die Login form voll geladen ist wird über OnDocument Complete folgender Code ausgeführt: (Die obere hälfte des Codes ist hierbei unrelevant da diese auch wieder nur bei WWW-.bern-web.ch benutzt wird)
Delphi-Quellcode:
procedure TForm1.WebBrowser1DocumentComplete(ASender: TObject;
const pDisp: IDispatch;
var URL: OleVariant);
var
i:integer;
begin
progressbar1.Position:=35;
if combobox2.ItemIndex=2
then begin
WB_GetHTMLCode(Webbrowser1, Memo2.Lines);
if FillForm(WebBrowser1, '
smsMessage', memo1.Text)=true
then begin
progressbar1.Position:=50;
webbrowser1.Stop;
FillForm(WebBrowser1, '
smsMessage', memo1.Text) ;
FillForm(WebBrowser1, '
SMSEingabe', edit3.Text) ;
if combobox1.ItemIndex=1
then FillForm(WebBrowser1, '
intlPrefix', '
004176');
if combobox1.ItemIndex=2
then FillForm(WebBrowser1, '
intlPrefix', '
004177');
if combobox1.ItemIndex=3
then FillForm(WebBrowser1, '
intlPrefix', '
004178');
if combobox1.ItemIndex=4
then FillForm(WebBrowser1, '
intlPrefix', '
004179');
webbrowser1.oleobject.document.forms.item(4).submit;
progressbar1.Position:=75;
end else begin
if progressbar1.Position=35
then begin
if edit7.Text='
http://www.bern-web.ch/'
then begin
if pos('
Heute wurden von Ihrer IP-Adresse',Memo2.Text) > 0
then label1.Caption:='
Fehler: Limit erreicht! (IP oder Service wechseln)'
else label1.Caption:='
Fehler: Service Down?';
label1.Visible:=true;
end;
end;
end;
if edit7.Text='
http://www.bern-web.ch/Bern/sms_ok/'
then begin
Progressbar1.Position:=100;
webbrowser1.Navigate('
www.google.com');
end;
end;
///////////////// //////////////////////
if URL= '
http://www1.sunrise.ch/SMS-Sender-cbBpfAqFI.RUoAAAEwinJTNyCu-Sunrise-Residential-Site-WFS-de_CH-CHF.html'
then begin
repeat;
Application.ProcessMessages;
Sleep(1);
until WebBrowser1.ReadyState=4;
webbrowser1.oleobject.document.forms.item(1).elements.item('
LoginForm_Login').value := memo2.Lines[2];
if webbrowser1.oleobject.document.forms.item(1).elements.item('
LoginForm_Login').value =memo2.Lines[2]
then begin
webbrowser1.oleobject.document.forms.item(1).elements.item('
LoginForm_Password').value := memo2.Lines[3] ;
//webbrowser1.oleobject.document.forms.item(1).submit;
end;
//Server1 ENDE
end;
end;
3. Nachdem also die Login Daten eingeben wurden und der Login Button gedrückt wurde (Ob Manuell oder per:
webbrowser1.oleobject.document.forms.item(1).submit;
Warte ich bis die Seite wieder komplett geladen wurde und versuche dann die Felder per Button Klick zu füllen:
Delphi-Quellcode:
begin
Application.ProcessMessages;
while webbrowser1.Busy do Application.ProcessMessages;
while webbrowser1.ReadyState <> READYSTATE_COMPLETE do Application.ProcessMessages;
if not WBFillForm(webbrowser1,'message',Memo1.Text) then begin
ShowMessage('Das Textfeld message wurde nicht gefunden.');
end;
Application.ProcessMessages;
while webbrowser1.Busy do Application.ProcessMessages;
while webbrowser1.ReadyState <> READYSTATE_COMPLETE do Application.ProcessMessages;
end;
Und hier will er mir eben einfach keins der Felder füllen! Erhalte einfach immer die Meldung: ShowMessage('Das Textfeld message wurde nicht gefunden.');