Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi [Ole]Button in Form einer Webseite 'anklicken' (https://www.delphipraxis.net/110384-%5Bole%5Dbutton-form-einer-webseite-anklicken.html)

Maxisoft2 17. Mär 2008 12:41


[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:
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;
Problem: Es passiert 0,0 nichts - Einfach garnichts. Ich komme nicht dahinter weshalb -

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:

<div class="phxDialogTitle">Gruscheln</div>
            <div class="phxDialogContent">
                               





                Du möchtest [url="/Profile/d75189372afc6/"] &hearts;Victoria&hearts; Schmierer[/url] gruscheln?                </p>
                               



                 &#9829;Victoria&#9829; 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=" &hearts;Victoria&hearts; 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>
Wie ihr in der fett gedruckten Zeile sehen könnt, müsste es eigentlich klappen - Irgendeinen Fehler muss ich aber wohl gemacht haben.

Würde mich gigantisch über Eure Hilfe freuen,
Grüße,
- Max

dominikkv 17. Mär 2008 12:46

Re: [Ole]Button in Form einer Webseite 'anklicken'
 
Kommt er überhaupt zu der Zeile
Delphi-Quellcode:
ovElements.item(i).Click;
(Mit Debugger nachprüfen)

Maxisoft2 17. Mär 2008 13:03

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?

marabu 17. Mär 2008 13:54

Re: [Ole]Button in Form einer Webseite 'anklicken'
 
Hallo Max,

dein Code passt nicht zu dem HTML-Fragment.

Delphi-Quellcode:
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;
Hast du es auch schonmal so probiert?

Delphi-Quellcode:
procedure TPROfiler.Button1Click(Sender: TObject);
begin
  VZbrowse.OleObject.Document.forms.item(0).submit;
end;
Grüße vom marabu

Maxisoft2 17. Mär 2008 15:01

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:
                                <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" />
Dieses Fieldset wird fälschlicherweise angesprochen, anstatt das weiter unten gelegene mit dem "Gruschel"-Button.

Maxisoft2 17. Mär 2008 17:35

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

marabu 18. Mär 2008 19:39

Re: [Ole]Button in Form einer Webseite 'anklicken'
 
Hallo Max,

befinden sich die beiden Forms überhaupt im selben Frame?

Freundliche Grüße

Maxisoft2 19. Mär 2008 09:47

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