Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Button einer Web-Seite "drücken" lassen (https://www.delphipraxis.net/46847-button-einer-web-seite-druecken-lassen.html)

XeRo 1. Jun 2005 16:08


Button einer Web-Seite "drücken" lassen
 
Hi.

ich will, dass mein programm, nach dem durchsuchen des quelltextes, automatisch auf einer Internetseite einen Button drücken lässt.

Button sieht wie folgt aus:
Zitat:

<input type="hidden" name="skill" value="Make"><input type="Submit" name="Machen" value="Machen" class="formular_transp">

So, jetzt hab ich leider keine ahnung wie das gehen soll...Wenn möglich möchte ich auf Komponenten wie TWebBrowser verzichten.

Kann mir da jemand helfen ? ;-)

DGL-luke 1. Jun 2005 16:17

Re: Button einer Web-Seite "drücken" lassen
 
das hört sich ganz eindeutig an, als wolltest du ein Browsergame hacken. und sowas machen wir hier nicht.

obwohl es sowas von einfach ist... alle buttons in browsergames sind links(auch und gerade submit-buttons), und links kann man folgen... leute, wenn ihr schon cracken wollt, wieso stellt ihr euch dann so an?

XeRo 1. Jun 2005 16:20

Re: Button einer Web-Seite "drücken" lassen
 
Nein, das will ich nicht ;-)

und wo ist da
Zitat:

<input type="hidden" name="skill" value="Make"><input type="Submit" name="Machen" value="Machen" class="formular_transp">
der link versteckt???
hab keine ahnung wie das gehen soll...

DGL-luke 1. Jun 2005 16:26

Re: Button einer Web-Seite "drücken" lassen
 
der link is im action-attribut des form-tags :stupid:
wenn in method dann get drinsteht, hast du sowieso schon gewonnen.

Treffnix 1. Jun 2005 16:29

Re: Button einer Web-Seite "drücken" lassen
 
Mit dem Webbrowser wärs relativ einfach. Hier im Forum suchenwebbrowser click

Ohne musste dir den Link halt zusammenbasteln. Klappt aber auch nicht immer. Das <form> hat irgendwo ein Target eingetragen. Dahinter die Werte mit ?<wert>=<value>&<wert2>=<value2>&.....

XeRo 1. Jun 2005 19:56

Re: Button einer Web-Seite "drücken" lassen
 
Danke erstmals.

XeRo 2. Jun 2005 18:56

Re: Button einer Web-Seite "drücken" lassen
 
Habs jetzt doch mit TWebbrowser gemacht ;-)

hab folgendes Script verwendet:

Delphi-Quellcode:
PROCEDURE ClickOnButton(WebBrowser1:TWebBrowser; BT_text:STRING);
VAR
  ovElements,ovFrames: OleVariant;
  i,j,k: Integer;
BEGIN
  IF Webbrowser1.OleObject.Document.Frames.Length > 1 THEN
  BEGIN
        ovFrames := Webbrowser1.OleObject.Document.Frames;
        FOR j := 0 TO (ovFrames.Length - 1) DO
            FOR k := 0 TO (ovFrames.Item(j).Document.Forms.Length - 1) DO
            BEGIN
                ovElements := ovFrames.Item(j).Document.Forms.Item(k).elements;
                FOR i := 0 TO (ovElements.Length - 1) DO
                  IF ((ovElements.Item(i).tagName = 'INPUT')
                    AND (ovElements.Item(i).type = 'submit')
                    AND (ovElements.Item(i).Value = BT_text)) THEN
                        ovElements.Item(i).Click;
            END;
  END
  ELSE
  BEGIN
      FOR j := 0 TO (WebBrowser1.OleObject.Document.forms.Length - 1) DO
      BEGIN
          ovElements := WebBrowser1.OleObject.Document.forms.item(j).elements;
          FOR i := 0 TO (ovElements.Length - 1) DO
              IF ((ovElements.item(i).tagName = 'INPUT')
                AND (ovElements.item(i).type = 'submit')
                AND (ovElements.item(i).Value = BT_text)) THEN
                    ovElements.item(i).Click;
      END;
  END;
END;
Danke @All.

pain 8. Jun 2005 18:27

Re: Button einer Web-Seite "drücken" lassen
 
und was mach ich, wenn mehrere buttons die gleiche beschriftunghaben???

Waldteufel 8. Jun 2005 18:30

Re: Button einer Web-Seite "drücken" lassen
 
Hi.

Das name-Attribut sollte auf jeden Fall eindeutig sein. :zwinker:

pain 8. Jun 2005 18:37

Re: Button einer Web-Seite "drücken" lassen
 
Zitat:

<form action="irgendwas.php" method="POST">
<input type="hidden" name="make" value="irgendwas1">
<input type="hidden" name="form" value="">
<input type="Submit" name="Machen" value="Machen" class="formular_transp">
</form>

<form action="irgendwas.php" method="POST">
<input type="hidden" name="make" value="irgendwas2">
<input type="hidden" name="form" value="">
<input type="Submit" name="Machen" value="Machen" class="formular_transp">
</form>
:gruebel:

Treffnix 8. Jun 2005 18:43

Re: Button einer Web-Seite "drücken" lassen
 
die kannst du dann anhand der Forms unterscheiden.

pain 8. Jun 2005 18:45

Re: Button einer Web-Seite "drücken" lassen
 
tut mir leid, das sagt mir nichts, kannst du mir ein codebeispiel geben wie ich das machen muss?

Treffnix 8. Jun 2005 18:47

Re: Button einer Web-Seite "drücken" lassen
 
Haste doch oben

Delphi-Quellcode:
WebBrowser1.OleObject.Document.forms.item(j).elements
j ist die Nummer des Formulars, dass du gerade ausliest

pain 8. Jun 2005 18:52

Re: Button einer Web-Seite "drücken" lassen
 
Hä?
In meinem Beispiel ist nur das 1.value unterschiedlich...wie genau kann ich das auslesen...
in dem code von xero wird ja nur das letzte value gelesen oder?

Treffnix 8. Jun 2005 19:03

Re: Button einer Web-Seite "drücken" lassen
 
Nein. In deinem Beispiel unterscheiden sich die Forms vielleicht nicht vom Aufbau her. Nichts desto Peng sind es 2 verschiedene Forms, die du z.B. mit WebBrowser1.OleObject.Document.forms.item(0) und WebBrowser1.OleObject.Document.forms.item(1) ansprechen kannst. In dem Beispiel werden alle vorhandenen Forms in Schleife nacheinander durchlaufen und innerhalb dieser Schleife werden alle Felder der jeweiligen Forms nochmal durchlaufen und überprüft, ob es sich um das gesuchte handelt.

In deinem Fall hast du 2 Möglichkeiten:

1. Du weisst, welches Formular welche Nummer hast ( z.B. durch ausprobieren )
2. Du überprüfst zunächst, ob es innerhalb des Formulars das Feld Make mit "irgendwas1" bzw. "irgendwas2" gibt.

pain 8. Jun 2005 19:06

Re: Button einer Web-Seite "drücken" lassen
 
Zitat:

Zitat von Treffnix
2. Du überprüfst zunächst, ob es innerhalb des Formulars das Feld Make mit "irgendwas1" bzw. "irgendwas2" gibt.

klinkt gut...

wie mach ich das? :lol: :oops:

Treffnix 8. Jun 2005 19:08

Re: Button einer Web-Seite "drücken" lassen
 
Tu mir und dir selbst einen gefallen und versuch erstmal das Beispiel zu verstehen, bevor du fragst. Da wird genau das gemacht:
Delphi-Quellcode:
ovElements.item(i).Value = 'irgendwas1' etc...


Alle Zeitangaben in WEZ +1. Es ist jetzt 05:38 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