Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi twebbrowser Bild per Dateiname suchen und anklicken (https://www.delphipraxis.net/118680-twebbrowser-bild-per-dateiname-suchen-und-anklicken.html)

Blumi 12. Aug 2008 23:55


twebbrowser Bild per Dateiname suchen und anklicken
 
Hi zusammen

Wie ist es möglich ein Element im TWebBrowser per Dateiname zu finden?

Und das es nachher möglich ist auch noch darauf zu klicken?
(Element.click)

Mfg.
:?: :mrgreen: :-D

toms 13. Aug 2008 04:45

Re: twebbrowser Bild per Dateiname suchen und anklicken
 
Hallo Blumi,

Durchlaufe alle Bilder im TWebbrowser, ermittle die URL und überprüfe, ob die URL den Dateinamen enthält.

Beispiel:

Delphi-Quellcode:
uses
  MSHTML;

function WB_ClickImgByFileName(WB: TWebbrowser; ImgFileName: string): Boolean;
// Hinweis: Funktioniert nicht, falls sich das Bild in einem Frame befindet
var
  iImgCounter: Word;
  sImgHref: string;
  iHtmlDoc: IHtmlDocument2;
begin
  Result := False;
  iHtmlDoc := WB.Document as IHtmlDocument2;
  // Durchlaufe alle alle Bilder im TWebbrowser
  for iImgCounter := 0 to WB.OleObject.Document.Images.Length - 1 do
  begin
    // URL des Bildes[iImgCounter] ermitteln
    sImgHref := (iHtmlDoc.Images.Item(iImgCounter, 0) as IHTMLImgElement).Href;
    // Dateiname des Bildes[iImgCounter] überprüfen
    if Pos(ImgFileName, sImgHref) <> 0 then
    begin
      try
        // Click aufrufen
        ((iHtmlDoc.Images.Item(iImgCounter, 0) as IHTMLImgElement) as IHTMLElement).Click;
        Result := True;
      except
        // Ein Fehler ist aufgetreten
      end;
    end;
  end;
end;
Beispielaufruf:

Delphi-Quellcode:
ClickImgByFileName(Webbrowser1, meinbildxyz.gif);

Blumi 13. Aug 2008 11:25

Re: twebbrowser Bild per Dateiname suchen und anklicken
 
Das Bild wird gar nicht erst gefunden.
Gibt es eine Möglichkeit auch in der Datei noch zu suchen, die per JavaScript eingebunden wird?
Das Bild wird per JavaScript eingebunden. Wenn ich aber im Browser auf Eigenschaften klicke wird mir der Dateiname ja trotzdem angezeigt klar.
Aber im Quelltext der HTML Datei ist dieses Bild dann trotzdem nicht vorhanden!

Wie geht man dort vor?

:-D :?:

toms 13. Aug 2008 19:25

Re: twebbrowser Bild per Dateiname suchen und anklicken
 
Zitat:

Zitat von Blumi
Das Bild wird gar nicht erst gefunden.
Gibt es eine Möglichkeit auch in der Datei noch zu suchen, die per JavaScript eingebunden wird?
Das Bild wird per JavaScript eingebunden. Wenn ich aber im Browser auf Eigenschaften klicke wird mir der Dateiname ja trotzdem angezeigt klar.
Aber im Quelltext der HTML Datei ist dieses Bild dann trotzdem nicht vorhanden!

Diese Infos wären schon in der Anfangsfrage nützlich gewesen.
Handelt es sich um ein Captcha? Dann habe ich leider keine Lösung.

Blumi 13. Aug 2008 21:51

Re: twebbrowser Bild per Dateiname suchen und anklicken
 
Zitat:

Zitat von toms

Diese Infos wären schon in der Anfangsfrage nützlich gewesen.
Handelt es sich um ein Captcha? Dann habe ich leider keine Lösung.

Tut mir leid.
Aber es handelt sich nicht um ein Captcha!
Ich will ja auf das Bild klicken ;)

marabu 14. Aug 2008 05:58

Re: twebbrowser Bild per Dateiname suchen und anklicken
 
Moin,

wenn der Dateiname des zu ladendend Image sich nur in JS-Code finden lässt, dann ist es wahrscheinlich effektiver den Image-Link über seine absolute oder relative Position im DOM zu lokalisieren, zu einem Zeitpunkt in dem das Image fest im DOM verankert ist. Absolut, wenn möglich. Relativ heißt, dass du ein benanntes Element in der Nähe (Parent, Sibling, ...) ausfindig machst, an dem du dich lang hangeln kannst. Wie du das Bild dann anklickst hat dir Tom ja schon gezeigt.

Grüße vom marabu

BBoy 1. Jun 2009 16:43

Re: twebbrowser Bild per Dateiname suchen und anklicken
 
Ist es möglich die Routine von toms so zu ändern das kein ie-fenster geöffnet wird, sondern die Seite im TWebBrowser angezeigt wird wenn geklickt wird?
Desweiteren müsste mein Programm nicht nach dem Dateinamen suchen sondern nach dem link der in href= steht, kann man die Routine dazu umschreiben?

ich sag schon mal ...danke für eure Hilfe.

himitsu 1. Jun 2009 16:54

Re: twebbrowser Bild per Dateiname suchen und anklicken
 
schau dir mal die Ereignisliste von TWebBrowser an, da gibt es Eines (ich glaub das fängt mit OnNew... an) für seite/Link soll in neuem Fenster geladen werden ... dieses fängst du n der Prozedur ab (entsprechenden Parameter setzen) und lädst die seite selber im TWebBrowser (die URL wird dir auch von der Prozedur geliefert)


so hatte ich das mal gemacht (k.A. ob es nicht doch irgendwo eine versteckte "nicht in neuem Fenster laden"-Option gibt)

toms 1. Jun 2009 16:57

Re: twebbrowser Bild per Dateiname suchen und anklicken
 
Zitat:

Zitat von BBoy
Desweiteren müsste mein Programm nicht nach dem Dateinamen suchen sondern nach dem link der in href= steht, kann man die Routine dazu umschreiben?

Das macht es doch :gruebel:

Delphi-Quellcode:
// URL des Bildes[iImgCounter] ermitteln
    sImgHref := (iHtmlDoc.Images.Item(iImgCounter, 0) as IHTMLImgElement).Href;
    // Dateiname des Bildes[iImgCounter] überprüfen
    if Pos(ImgFileName, sImgHref) <> 0 then

BBoy 1. Jun 2009 17:41

Re: twebbrowser Bild per Dateiname suchen und anklicken
 
Nein, Die Routine sucht im Pfad zum Bild und nicht in dem Link der aufgerufen wird wenn man es anklickt. Habe simghref in einem Memo auflisten lassen, da wurden wir die imagepfade angezeigt und nicht die Links.

Edit:
in diesem code wird das angezeigt was in img src=" steht und nicht was in href="
Hier mal ein Beispiel wie der html text aussieht:

Delphi-Quellcode:
[url="zeigefoto.php?nr=32"][img]http://www.meineseite.de/bilder/foto32.jpg[/img][/url]


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:41 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz