Delphi-PRAXiS
Seite 4 von 9   « Erste     234 56     Letzte »    

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi formularfelder einer website ausfülle? (https://www.delphipraxis.net/978-formularfelder-einer-website-ausfuelle.html)

masters001 30. Dez 2002 23:33

Ja bei einem Link auf eine andere Seite ist das so!
Was ist aber wenn ich mich z.B. bei freenet automatisch einloggen möchte?

Wie Username und Password in das Formular eingetragen werden ist ja hier auch schon gut erklärt und klappt auch.
Aber wie drückt das Programm jetzt den OK button?

<input type="submit" name="submit" value="ok" style="font-size:10px;">

Kann man den nicht genau wie die Eingabefelder ansprechen?

Jan 31. Dez 2002 00:51

das weiss ich nicht, aber schau mal weiter oben was ich da geschrieben hab, du musst nur den link zusammenbauen, dann musst du das Formular überhaupt nicht Ausfüllen, deswegen ist es mir auch schleierhaft, warum du danach fragst.
Gruss
Jan

masters001 31. Dez 2002 09:51

Hallo ich habe eine Lösung gefunden:
Hier ein Beispielcode:

Code:
uses
  MSHTML;

var
  WebForm :HTMLFormElement;
  WebDoc : HTMLDocument

begin
WebBrowser2.OleObject.document.forms.item(0).elements.item('username').value:='jochen.bender';
WebBrowser2.OleObject.document.forms.item(0).elements.item('password').value:='*********';
WebDoc := WebBrowser2.Document as HTMLDocument;
WebForm := WebDoc.forms.item(varEmpty, 0) as HTMLFormElement;
WebForm.submit;
end;
cu masters001

masters001 31. Dez 2002 15:16

Ich hab hierzu aber auch noch eine erweiterte Frage:

Wenn ich auf einen Banner klicke der auf ein JavaScript verweist wie kann ich das ich Delphi realisieren also:

Gibt es da eine Methode den Banner direkt anzuklicken, oder kann ich irgendwie das Javascript im HTML Formular aufrufen?

Code:
href="javascript:sendSMS(11,'B9A4...73B')">[img]/adserver.freenet.de/image.ng/site=fn&prod=chetools& kat=rub&tbl=smssnd&ppos=11&TransactionID=B9A4....73B[/img]</a></td>
so sieht das aus.
(Es ist der erste Banner bei Freenet.de, um eine SMS zu verschicken)


Hier könnte ich mir theoretisch auch einen link zusammenbasteln aber der 2.wert der übergeben wird wird jedesmal verändert!
Oder könnte ich den wert auch aus den HTML QT auslesen?

[edit=Sakura]Transaction ID gekürzt[/edit]

Jan 31. Dez 2002 16:37

Hallo masters001,
Danke für den tip mit dem ansprechen der Formulare ohne Namen, das klappt schonmal, allerdings ist es mir nicht möglich mit deiner methode ein Formular abzuschicken, da sich das Formular in einem Frame befindet, und ich das document meines frames irgendwie nicht auslesen kann, kannst du mir da mal helfen? Danke im Vorraus.
Gruß
Jan

Jan 31. Dez 2002 16:54

Nach ein bischen Googlen schon gefunden:

Code:
procedure tform1.login;
var
  Webform : variant ;
begin
form1.WebBrowser1.OleObject.Document.Frames.item('main').Document.Forms.item(0).Elements.item('username').value := 'LANJAN' ;
form1.WebBrowser1.OleObject.Document.Frames.item('main').Document.Forms.item(0).Elements.item('password').value := 'moep' ;
WebForm := form1.WebBrowser1.OleObject.Document.Frames.item('main').Document.Forms.item(0);
WebForm.submit;
end;

end.

masters001 5. Jan 2003 19:56

Hallo bin noch auf ein Problem gestoßen:

Und zwar muss ich ein bestimmtes Form anprechen:
Code:
WebBrowser2.OleObject.document.forms.item('login').elements.item('username').value:=angaben[4];
wenn ich das aber ausführe kommt eine exception die auf errors in verbindung mit elements hinweist!

masters001 10. Jan 2003 14:36

Auf dieser Site geht bei mir gar nichts!
Speziell die Werte in die inputs einzutragen!
:= http://www.telekom.de/ttc/team_ie.htm
könnt ihr euch ja mal anschauen vielleicht fällt irgendeinem spontan was dazu ein!

Vielen Dank

masters001 13. Jan 2003 21:17

Hallo
Noch ne Frage:
weil ich mich mit meinem Programm bei verschiedenen Providern einloggen möchte habe ich meinen code ein bisschen "rationalisiert" :
Code:
WebBrowser2.OleObject.document.forms.item(0).elements.item(sms_full_Number_field).value:=sms_full_Number;
Ich habe jetzt die unterschiedlichen Felder und Eiträge in Variablen gespeichert (String) aber jedesmal wenn ich das Programm laufen lasse gibt es einen error!
Woran kann das liegen?

Jan 13. Jan 2003 23:36

Hallo masters001,
ich habe mich da jetzt eine ganze Menge mit befasst, d.h. ich habe ein ganzes Programm geschrieben,
dass eine Seite automatisch betreibt.
Das war sehr aufwendig, da es da noch viele kontrollmechanismen einzubauen galt.
Nun kann ich aus den dabei gemachten Erfahrungen schliessen, dass die meisten exception, besonders im Bezug auf elements daraus resultieren, dass die elemente zu früh angesprochen werden, d.h. sie sind noch nicht geladen.
Ich habe dieses Problem umgangen, indem ich im "ondocumentcomplete" event generell alles in "try" -> "except" einklammere, so dass diese Befehle ignoriert werden, wenn die datei noch nicht fertig geladen ist.

Das funktioniert nur deswegen, weil komischerweise, zumindest bei der Seite, mit der ich gearbeitet habe das "ondocumentcomplete" event mehrmals (an die 6 mal) ausgelöst wird.
Ich warte die events also solange einfach ab bis meine Befehle funktionieren. If-abfragen sind da natürlich von Nöten, da sonst dein Code mehrmals ausgeführt werden würde.
Ich könnte mir auch vorstellen, dass dieses Problem mit einem counter zu lösen wäre, welcher mitzählt das wievielte mal das event ausgelöst wurde, da kann ich aber nur sagen: ausprobieren.
Ich fand das Programmieren von autmatischem Webseitenavigieren extrem schwer, da die Laufzeiten stark von den Ladezeiten der Webseite abhängen, und man somit sehr variabel programmieren muss, fast mein ganzes Programm steht im "ondocumentcomplete" event.
Aber obwohl das Programm mittlerweile funktioniert kommt es regelmässig zu exceptions, weil die Seite irgendwelche Ladeverzögerungen oder ichweissnichtwas hat.
Insgesamt alles etwas seltsam. Zum Schluss bleibt mir nurnoch zu sagen, dass du , wenn du "try/except" verwendest dein Programm nicht in der Programmierumgebung starten solltest, weil Delphi die exceptions dann abfängt, und der "try" tag ignoriert wird.
Also erst kompilieren, und dann *.exe ausführen.
Greetz!
Jan


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:00 Uhr.
Seite 4 von 9   « Erste     234 56     Letzte »    

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz