Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Webbrowser element click (https://www.delphipraxis.net/94427-webbrowser-element-click.html)

ebber 21. Jun 2007 10:37


Webbrowser element click
 
Hallo

ich möchte im Webbrowser so einen click machen

Delphi-Quellcode:

WebBrowser1.OleObject.document.getElementById('a').click;
Das Problem ist aber, es gibt 2 Elemente mit der ID a. Sie haben aber verschiedene Values. Gibt es sowas wie 'getElementByValue' ?

MfG

mkinzler 21. Jun 2007 10:41

Re: Webbrowser element click
 
Man sollte auch nicht mehrere Elemente mit der selben ID bezeichnen. habe diese Elemente verschiedene Namen?

ebber 21. Jun 2007 11:37

Re: Webbrowser element click
 
Ich habe die Namen auch nicht ausgesucht.

Gibt es einen unterschied zwischen Name und ID ? Das einzige was sich unterscheidet sind die Values.

MfG

mkinzler 21. Jun 2007 11:42

Re: Webbrowser element click
 
Nein das 2 verschidene Eigenschaften. Die IDs sollte sich auf jedenfall unterscheiden.

ebber 21. Jun 2007 14:00

Re: Webbrowser element click
 
Wie kann ich das dann Rausfinden ?
Also im Seitenquelltext kann ich nur die Informationen finden die auch Firefox bei Seiteninformationen - Formular anzeigt :

Beschreibung: -, -
Typ:submit, submit
Feldname: a, a
Wert: 1, 2

MfG

mkinzler 21. Jun 2007 14:09

Re: Webbrowser element click
 
Du müsstest durch alle HTML-Elemente navigieren und anhand des Wertes entscheiden.

shmia 21. Jun 2007 14:17

Re: Webbrowser element click
 
Tipp:
Besorg' dir den IE Developer Toolbar.
Damit kann man die Elemente genau analysieren.
http://www.microsoft.com/downloads/d...E-2D5E1DB91038
Installieren und im IE Menü Ansicht->Explorer-Leiste->IE Developer Toolbar

mkinzler 21. Jun 2007 14:18

Re: Webbrowser element click
 
Zitat:

Zitat von shmia
Tipp:
Besorg' dir den IE Developer Toolbar.
Damit kann man die Elemente genau analysieren.
http://www.microsoft.com/downloads/d...E-2D5E1DB91038
Installieren und im IE Menü Ansicht->Explorer-Leiste->IE Developer Toolbar

Geht ja im FF ja auch. wenn 2 Elemente nun mal die selbe ID haben, haben sie die nunmal.

ebber 21. Jun 2007 14:36

Re: Webbrowser element click
 
Ist Sourceindex die ID ?

Der eine Button hat nämlich 148 und der andere 150.

Aber vorher hatte ich ja getElementById('a') und das a war dann der Feldname. Was ist dann die ID ?

Wie kann ich jetzt damit den Richtigen Button clicken ?

MfG

mkinzler 21. Jun 2007 14:40

Re: Webbrowser element click
 
Zitat:

Aber vorher hatte ich ja getElementById('a') und das a war dann der Feldname. Was ist dann die ID ?
Das ist die ID.


ie kann ich jetzt damit den Richtigen Button clicken ?

Code:
document.forms[0].elements[150].click();
müßte gehen.

ebber 21. Jun 2007 15:28

Re: Webbrowser element click
 
Leider nicht

OleError : Die Methode 'elements' wird vom Automatisierungsobjekt nicht unterstützt.

Ich denke nicht das ich hier was vertauscht habe : ?

Delphi-Quellcode:

Webbrowser1.OleObject.Document.forms[0].elements[150].click();

mkinzler 21. Jun 2007 15:32

Re: Webbrowser element click
 
Hab das nicht mit TWebBrowser getestet, sondern nur anhand des JS-DOM. Bin bisher ausgegangen, das dies identisch sei.
http://de.selfhtml.org/javascript/objekte/elements.htm

ebber 21. Jun 2007 15:47

Re: Webbrowser element click
 
Ich bin leider noch nicht schlauer geworden.

Das ist das einzigste was er überhaupt an nimmt. So wird der eine Button (vermutlich der erstere) geklickt, leider der falsche.

Delphi-Quellcode:

Webbrowser1.OleObject.Document.forms.item(0).Elements.item.click;
Kann ich hier irgendwo noch das 150 einbauen ?

MfG

mkinzler 21. Jun 2007 15:49

Re: Webbrowser element click
 
Vielleicht hilft das:
http://www.cryer.co.uk/brian/delphi/..._oleobject.htm

ebber 21. Jun 2007 16:34

Re: Webbrowser element click
 
Danke.

In gewisser Weise hat mir das geholfen. Nach längerem auf Links klicken habe ich das hier gefunden :

Delphi-Quellcode:

// If there is more than one button, you can do something like:

var
  ovElements: OleVariant;
  i: Integer;
begin
  ovElements := WebBrowser1.OleObject.Document.forms.item(0).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 = 'Recent Charges') then
      ovElements.item(i).Click;

http://www.swissdelphicenter.com/en/...de.php?id=1604

So gehts. :-D

MfG

marabu 21. Jun 2007 17:34

Re: Webbrowser element click
 
Hallo,

nur um das Rätsel noch aufzulösen: Wenn mehrere Elemente mit gleichem ID existieren, dann besorgt man sich eine Collection mittels getElementsByName() oder greift über den Namen (NAME oder ID) und den richtigen index (zero based) zu:

Delphi-Quellcode:
WebBrowser.OleObject.document.forms.item(0).Elements.item('a', 1).click;
Grüße vom marabu


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