![]() |
[Ole]Button in Form einer Webseite 'anklicken'
Hallo liebe Delphianer,
Hoffe dies steht im richtigen Forenteil - Seit heute Früh knappse ich nun schon an dem Problem, dass ich einen Button auf einem Formular, besser gesagt der Webseite Schuelervz.de per Ole "anklicken" lassen will. Die SuFu - Hier auf dem Board und bei Google - habe ich schon total ausgelutscht. Ich komme einfach nicht mehr weiter - Es kommt nicht in Frage, die Daten direkt per http post an den Server zu senden, da ein Referrer geprüft, und ein Checkcode mitübergeben wird. Hierzu mein Quelltext-Versuch:
Delphi-Quellcode:
Problem: Es passiert 0,0 nichts - Einfach garnichts. Ich komme nicht dahinter weshalb -
procedure TPROfiler.Button1Click(Sender: TObject);
var ovElements: OleVariant; i: Integer; begin ovElements := VZbrowse.OleObject.Document.forms.item(0).elements; for i := 0 to (ovElements.Length - 1) do if (ovElements.item(i).tagName = 'fieldBtnSubmit') and (ovElements.item(i).type = 'SUBMIT') then ovElements.item(i).Click; end; Wie ihr sehen könnt durchsuche ich die Webseite nach dem Button mit angegebenem TagName und dem Typus - es ist nur ein einzgier Submit-Button auf der Seite vorhanden, wodurch meineserachtens keine Abfrage der Value wichtig ist. Dieser Submitbutton hat dazu noch immer eine andere value, d.h. ich kann in die Ole Abfrage auch unmöglich eine Value-Abfrage miteinbauen, da der Wert des Buttons ja immer ein anderer ist. Zur Verständlichkheit ein Ausschnitt aus dem HTML-Quelltext der Seite, auf der der Button (in einem Div) liegt:
Code:
Wie ihr in der fett gedruckten Zeile sehen könnt, müsste es eigentlich klappen - Irgendeinen Fehler muss ich aber wohl gemacht haben.<div class="phxDialogTitle">Gruscheln</div> <div class="phxDialogContent"> Du möchtest [url="/Profile/d75189372afc6/"] ♥Victoria♥ Schmierer[/url] gruscheln? </p> ♥Victoria♥ sieht dann auf der Startseite dein Gruscheln. </p> </div> <div class="phxDialogButtons"> [b]<form name="performGruscheln" method="post" action="/Gruscheln/DialogGruscheln"> <input class="fieldBtnSubmit" type="submit" name="submit" value=" ♥Victoria♥ gruscheln!" />[/b] [url="/Friends/Search/be1aaeaa40859fa5/name/victoria/o/"]Nein, doch nicht![/url] <input type="hidden" name="referrer" value="/Friends/Search/be1aaeaa40859fa5/name/victoria/o/" /> <input type="hidden" name="id" value="d75138e94372afc6" /> <input type="hidden" name="formkey" value="61f473f4a5ec0194fba7160ae8fcaed96214ed7513842b88843b81527bbff7b040a04972d213b311d8e73593e9f1be5b0acbb9519ae5894f3d2924bb2a1e48f2" /> <input type="hidden" name="iv" value="ef20b09419dceb2c71073a30738ea5ce" /> <input type="hidden" name="checkcode" value="d782b3cd094f79678a42a8e86109b980" /> </form> </div> Würde mich gigantisch über Eure Hilfe freuen, Grüße, - Max |
Re: [Ole]Button in Form einer Webseite 'anklicken'
Kommt er überhaupt zu der Zeile
Delphi-Quellcode:
(Mit Debugger nachprüfen)
ovElements.item(i).Click;
|
Re: [Ole]Button in Form einer Webseite 'anklicken'
Hallo!
Habe als Anfänger den Debugger leider noch nie "direkt" für logische probleme verwendet, und mich gerade versucht darüber zu informieren, also an der stelle nen Haltepunkt gesetzt, versucht mit F8 einzeln zeile für zeile zu gehen, werde jedoch nicht ganz schlau daraus. Auf gut Deutsch: Ich bekomme keinerlei feedback. Gibt es noch eine andere Möglichkheit dem Ganzen auf den Grund zu gehen? EDIT: Theoretisch müsste mir ja etwas angezeigt werden, wenn die Procedure nicht ausgeführt wird - Laufzeitfehler oder Anderes, oder irre ich? |
Re: [Ole]Button in Form einer Webseite 'anklicken'
Hallo Max,
dein Code passt nicht zu dem HTML-Fragment.
Delphi-Quellcode:
Hast du es auch schonmal so probiert?
procedure TPROfiler.Button1Click(Sender: TObject);
var ovElements: OleVariant; i: Integer; begin ovElements := VZbrowse.OleObject.Document.forms.item(0).elements; for i := 0 to (ovElements.Length - 1) do if SameText(ovElements.item(i).tagName, 'input') and SameText(ovElements.item(i).type, 'SUBMIT') then begin ovElements.item(i).Click; Break; end; end;
Delphi-Quellcode:
Grüße vom marabu
procedure TPROfiler.Button1Click(Sender: TObject);
begin VZbrowse.OleObject.Document.forms.item(0).submit; end; |
Re: [Ole]Button in Form einer Webseite 'anklicken'
Hallo!
Danke für die Hilfe! Immerhin tut sich jetzt etwas - Die Suchfunktion, die nur etwas über der eigentlichen Form ist (und keinen button hat), wird angesprochen und bei einem Buttondruck bestätigt man so praktisch die Sucheingabe. Ich müsste der Codezeile nun also beibringen, dass nicht die erste, sondern die zweite Form - in der der richtige Submit-Button ist - angesprochen wird. Geht das? Grüße, - Max EDIT:
Code:
Dieses Fieldset wird fälschlicherweise angesprochen, anstatt das weiter unten gelegene mit dem "Gruschel"-Button.
<form method="post" action="/Search/General" id="QuickFormSearch">
<fieldset> <input type="hidden" name="uniId" value="1948" /> <input type="text" name="name" id="name" value="Leute finden" alt="Leute finden" class="preset" /> <input type="hidden" name="formkey" value="da483d916248e13d54d0f619fd0dd617a541b4bea833441f9510d3fcd8bde5b960a65f4d44f615045d20132a1fcd9f30159fcc9a367acc8f05d46dbfc0abe6ba" /> |
Re: [Ole]Button in Form einer Webseite 'anklicken'
Ich habe ebenfalls schon versucht, die "0" mit einer "1" zu ersetzen, was nach meiner Logik ja bedeuten würde, dass das nächste Feld angesprochen wird -
" Im Projekt Project1.exe ist eine Exception der Klasse EAccessViolation aufgetreten. Meldung: 'Zugriffsverletzung bei Adresse 00454247 in Modul 'Project1.exe'. Lesen von Adresse 00000000'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen. " Leider werde ich mit dieser Fehlermeldung aufgehalten . Grüße, - Max |
Re: [Ole]Button in Form einer Webseite 'anklicken'
Hallo Max,
befinden sich die beiden Forms überhaupt im selben Frame? Freundliche Grüße |
Re: [Ole]Button in Form einer Webseite 'anklicken'
Hallo nocheinmal,
Ersteinmal, danke für die Hilfe bei der Fehlersuche! Jau, es sind beide im selben Frame. Nun bin ich auch dahinter gekommen, weshalb ich die Fehlermeldung bekomme - Der Button wird "geklickt" aber die Webseite gibt die Meldung "Mitglied nicht gefunden" als Error zurück, sodass es für Delphi wie eine nicht ausführbare OLE Funktion aussah. -> Ich glaube beim Submit muss die Value des Submit-Buttons mitübergeben werden, da sonst das Kommando nicht zugeordnet werden kann. Ist dies auch mit OLE möglich? Grüße, - Max EDIT: Meiomei ich stand aufm schlauchl.. ein einfaches .click am Ende hat die Magie geschehen lassen ;-9 Danke für Eure Hilfen ! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:18 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