Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   TWebBrowser: Text suchen und click simulieren (https://www.delphipraxis.net/129780-twebbrowser-text-suchen-und-click-simulieren.html)

mexx2k4k 25. Feb 2009 12:50


TWebBrowser: Text suchen und click simulieren
 
Ich habe folgendes Problem:

Ich lade eine Seite im TWebBrowser (https://email.t-online.de/), komme bis zum Login, logge mich ein und bin dann in der Übersicht, in welcher ich normal E-Mails anklicken und öffnen kann.
Der nächste Schritt wäre, dass ich eine E-Mail per Betreff suche und anklicke...
Allerdings ist die komplette Seite, bis auf das Grundgerüst, dynamisch per Javascript geladen, was bedeutet, dass der reine HTML-Quellcode so ausschaut:

Delphi-Quellcode:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
<html>
  <head>
    <meta http-equiv="X-UA-Compatible" content="IE=EmulateIE7" />
    <title>T-Online eMail</title>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    <link rel="SHORTCUT ICON" href="/favicon.ico"/>
    <script language="JavaScript" type="text/javascript" src="V0-2-9/lib/jquery.js"></script>
    <script language="JavaScript" type="text/javascript" src="V0-2-9/lib/swfobject.js"></script>

    <script language="JavaScript" type="text/javascript" src="V0-2-9/lib/rca-core.prototypes.js"></script>
    <script language="JavaScript" type="text/javascript" src="V0-2-9/lib/rca-core.js"></script>
    <script language="JavaScript" type="text/javascript" src="V0-2-9/lib/jquery.bubble.js"></script>
    <script language="JavaScript" type="text/javascript" src="V0-2-9/lib/jquery.datepicker.js"></script>
    <script language="JavaScript" type="text/javascript" src="V0-2-9/lib/jquery.cookie.js"></script>
    <script language="JavaScript" type="text/javascript" src="V0-2-9/lib/jquery.effects.js"></script>

    <script language="JavaScript" type="text/javascript" src="V0-2-9/lib/jquery.autocomplete.js"></script>
    <script language="JavaScript" type="text/javascript" src="V0-2-9/lib/rca-core.base.js"></script>
    <script language="JavaScript" type="text/javascript" src="V0-2-9/res/rte/tiny_mce.js"></script>
    <script language="JavaScript" type="text/javascript">
      $(document).ready(
        function () {
          $N.setRcaVersion('V0-2-9');
          $N.setRcaMandant('4901');
        }
      );
    </script>

<script language="JavaScript" type="text/javascript">
$(document).ready(function () {
  $N.bootOptions = {};
  $N.bootOptions["packagePreload"] = "package.full.preload";
  $N.bootOptions["packageFinalize"] = "";
  $N.bootOptions["bootScript"] = "boot\/full.js";
  $N.bootOptions["initScript"] = "boot.ngcs.js";
  $N.bootOptions["service"] = "full";
  $N.bootOptions["caller"] = "";
});
</script>
    <script language="JavaScript" type="text/javascript">
      $(document).ready(
        function () {
          if( $N.Browser.is('msie >= 7 || firefox >= 2 || chrome') || (document.location.href.search('ibvc=1') != -1)) {
             // redirect to flash hint if version check fails..
            if( swfobject.getFlashPlayerVersion().major < 9 && document.location.href.search('imfl=1') == -1 && document.cookie.search('imfl=1') == -1 )
              document.location.replace('browser/index_flash.html?ibvc=' + (document.location.href.search('ibvc=1') ? '1' : '0'));

            $('body').empty();
            $N.loadJs( $N.bootOptions['initScript'] );
          }
          else {
            document.location.replace('browser/index_browser.html');
          }
        }
      );
    </script>

  </head>
  <body>
   

Um die Anwendung nutzen zu k&ouml;nnen, muss JavaScript in Ihrem Browser aktiviert sein. Bitte pr&uuml;fen Sie, ob JavaScript aktiviert ist und laden Sie anschlie&szlig;end die Seite neu.</p>
  </body>
</html>

Der Content auf den ich zugreifen will, wird in Zeile 40 - 57 dynamisch geladen.
Welche Möglichkeit gibt es nun an dynamisch erzeugten Text zu kommen, am besten dessen Mausposition auszulesen um einen Click zu simulieren?

Wie man die Mausposition setzt und anschließend den Click ausführt, weiß ich... es geht nur um die Suche von Text und dessen Position.

Ich wäre euch sehr dankbar, wenn ihr eine Möglichkeit wisst und mir diese mitteilen könntet.

Larsi 25. Feb 2009 12:59

Re: TWebBrowser: Text suchen und click simulieren
 
Wenn es um das Abrufen von Mails geht würde ich Pop benutzen.

mexx2k4k 25. Feb 2009 13:42

Re: TWebBrowser: Text suchen und click simulieren
 
:wall: :wall:
Spaßvogel

fkerber 25. Feb 2009 14:13

Re: TWebBrowser: Text suchen und click simulieren
 
Hi!

Wird da ein Flash-"Film" geladen - also ist das wirklich HTML-Code der da geladen wird oder anders?
(Ich kenne T-Online-Mail nicht...)

Möchtest du das mit Delphi lösen?

Ciao, Frederic

mexx2k4k 25. Feb 2009 14:21

Re: TWebBrowser: Text suchen und click simulieren
 
Ich habe mit Delphi angefangen, mein Problem zu lösen, da ich mit Delphi die meiste Erfahrung habe... Allerdings würde ich auch andere Programmiersprachen verwenden, wenn es da leichter zu realisieren wäre...

Ich erkläre die Vorgehensweise von T-Online-Mail:

Wenn ich folgenden HTML-Code hätte:
[delphi]
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>

test

</body>
</html>
[delphi]

dann könnte ich problemlos auf den Link 'test' zugreifen...

Da T-Online jetzt aber so schlau ist und den Content, in dem sich auch interessante Links verstecken, dynamisch einliest, sieht das ganze so aus wie bei meinem ersten Beitrag und ich habe keine Möglichkeit auf Inhalt, z.B. solche Link zuzugreifen...

Ich hoffe das war einigermaßen verständlich

fkerber 25. Feb 2009 14:28

Re: TWebBrowser: Text suchen und click simulieren
 
Hi!

Grundsätzlich ja, was mir aber noch nicht so ganz klar ist, ob da dynamisch HTML-Code generiert/eingelesen wird oder eine Flash-Bedien-Oberfläche.
Also wenn die Seite angezeigt wird (im normalen Browser), stehen dann die Betreffzeilen überhaupt im Quellcode drin?


Ciao, Frederic

mexx2k4k 25. Feb 2009 14:33

Re: TWebBrowser: Text suchen und click simulieren
 
Delphi-Quellcode:

<script language="JavaScript" type="text/javascript">
      $(document).ready(
        function () {
          if( $N.Browser.is('msie >= 7 || firefox >= 2 || chrome') || (document.location.href.search('ibvc=1') != -1)) {
             // redirect to flash hint if version check fails..
            if( swfobject.getFlashPlayerVersion().major < 9 && document.location.href.search('imfl=1') == -1 && document.cookie.search('imfl=1') == -1 )
              document.location.replace('browser/index_flash.html?ibvc=' + (document.location.href.search('ibvc=1') ? '1' : '0'));

            $('body').empty();
            $N.loadJs( $N.bootOptions['initScript'] );
          }
          else {
            document.location.replace('browser/index_browser.html');
          }
        }
      );
    </script>
Hiermit wird der eigentliche Content geladen. Es wird HTML-Quellcode generiert und hier eingelesen. Wenn ich in einem normalen Browser den Quellcode anzeigen lasse, ist dieser erzeugte Quellcode auch nicht zu sehen...
Allerdings schafft es das Addon 'Firebug' für Firefox es dieses Quellcode anzeigen zu lassen, was heißt, dass es irgendeine Möglichkeit geben muss.

jaenicke 25. Feb 2009 14:57

Re: TWebBrowser: Text suchen und click simulieren
 
Crossposts solltest du verlinken, dann kann man schauen ob da schon jemand das selbe geschrieben hat, bevor man sich die Mühe macht etwas zu schreiben, was vielleicht schon da steht...
http://www.delphi-forum.de/viewtopic.php?p=551167

mexx2k4k 25. Feb 2009 15:09

Re: TWebBrowser: Text suchen und click simulieren
 
Vielleicht hat einer von euch ja wenigstens eine Idee, was ich außer dem TWebBrowser noch verwenden könnte...

sx2008 26. Feb 2009 03:38

Re: TWebBrowser: Text suchen und click simulieren
 
Zitat:

Zitat von mexx2k4k
Vielleicht hat einer von euch ja wenigstens eine Idee, was ich außer dem TWebBrowser noch verwenden könnte...

An dem TWebBrowser kommst du nicht vorbei, weil du eine Komponente brauchst, die folgende Aufgaben kann:
* HTTP und HTTPS Transfers
* HTML Parser
* Webforms laden
* Javascript ausführen
Rein theoretisch könnte man das auch mit Mozilla Gecko (bekannt aus Firefox) erledigen, aber ich wüsste nicht wie man da von "Aussen" drankommt.
Dagegen sind alle Interfaces des IE gut dokumentiert und es gibt jede Menge Beispielcode dazu im Netz.


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