![]() |
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? |
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 |
Hallo ich habe eine Lösung gefunden:
Hier ein Beispielcode:
Code:
cu masters001
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; |
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:
so sieht das aus.
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>
(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] |
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 |
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. |
Hallo bin noch auf ein Problem gestoßen:
Und zwar muss ich ein bestimmtes Form anprechen:
Code:
wenn ich das aber ausführe kommt eine exception die auf errors in verbindung mit elements hinweist!
WebBrowser2.OleObject.document.forms.item('login').elements.item('username').value:=angaben[4];
|
Auf dieser Site geht bei mir gar nichts!
Speziell die Werte in die inputs einzutragen! := ![]() könnt ihr euch ja mal anschauen vielleicht fällt irgendeinem spontan was dazu ein! Vielen Dank |
Hallo
Noch ne Frage: weil ich mich mit meinem Programm bei verschiedenen Providern einloggen möchte habe ich meinen code ein bisschen "rationalisiert" :
Code:
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!
WebBrowser2.OleObject.document.forms.item(0).elements.item(sms_full_Number_field).value:=sms_full_Number;
Woran kann das liegen? |
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. |
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