Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Vom Programm aus auf Webseitenelemente zugreifen (https://www.delphipraxis.net/212257-vom-programm-aus-auf-webseitenelemente-zugreifen.html)

Rued 13. Jan 2023 12:29

Vom Programm aus auf Webseitenelemente zugreifen
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hallo!

Da mein TWebBrowser (in Delphi 2010) mit den zahlreichen Scripten der Seite www.trotto.de/index.htm nicht klarkommt (Beispiel für Fehlermeldung im Anhang), lade ich die Seite in einen externen Browser. Wie greife ich aus meinem Programm auf Checkboxen und Button der Seite zu? Für die entscheidenden Checkboxen muss ein bevorstehndes Rennen ausgewählt werden.

Wie komme ich z. B. an die Handles der Checkboxen?

Gruß
Rued

P.S.: Silent = true für TWebBrowser ist keine Lösung, da die Scripte ausgeführt werden müssen.

omnibrain 13. Jan 2023 13:10

AW: Vom Programm aus auf Webseitenelemente zugreifen
 
Der IE basierte Webview steckt standardmäßig auf dem Funktionsniveau von IE 6 oder 7 fest. Du kannst ihm per Registry-Eintrag aber sagen, dass für dein Programm ein höheres Niveau gelten soll:
Code:
[HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION]
"programmname.exe"=dword:00002af8

[HKEY_LOCAL_MACHINE\SOFTWARE\Wow6432Node\Microsoft\Internet Explorer\Main\FeatureControl\FEATURE_BROWSER_EMULATION]

"programmname.exe"=dword:00002af8
Der eine ist für 32 Bit, der andere für 64 Bit.

Alternativ kannst du schauen ob du den Edge(Chromium) basierten WebView2 mit folgender Komponenten nurtzen kannst: https://github.com/salvadordf/WebView4Delphi

Oder du automatisierst den Zugriff ganz anders, mit einem Tool wie Selenium?

Die Frage ist aber auch: Hat die Seite "Abwehrmaßnamen" und lassen die Nutzungsbedingungen automatisierten Zugriff zu?

himitsu 13. Jan 2023 14:38

AW: Vom Programm aus auf Webseitenelemente zugreifen
 
Der TWebBrowser lässt sich auch auf Edge umstellen,
bzw. direkt TEdgeBrowser.

Delphi-Referenz durchsuchenTWebBrowser.SelectedEngine = EdgeOnly oder EdgeIfAvailable

Rued 13. Jan 2023 15:14

AW: Vom Programm aus auf Webseitenelemente zugreifen
 
Zitat:

Zitat von himitsu (Beitrag 1517392)
Der TWebBrowser lässt sich auch auf Edge umstellen,
bzw. direkt TEdgeBrowser.

Delphi-Referenz durchsuchenTWebBrowser.SelectedEngine = EdgeOnly oder EdgeIfAvailable

Die TWebBrowser-Komponente in Delphi 2010 verfügt nicht über die SelectedEngine-property.

Rued 13. Jan 2023 15:25

AW: Vom Programm aus auf Webseitenelemente zugreifen
 
@omnibrain:
  • Habe den Registry-Eintrag erfolglos gemacht.
  • Mit der WebView2-Komponente scheint mein Delphi 2010 überfordert zu sein, jedenfalls kann es mit dem Package von nuget nichts anfangen. [Vorausgesetzt, ich habe mit "microsoft.web.webview2.1.0.1462.37.nupkg" das richtige heruntergeladen.]
  • Mit Selenium bin ich überfordert.

Aktualisierung zu Punkt 2:
Die WebView2Loader.dll habe ich zu meinen dlls geschoben und das Post-Build-Ereignis im Projekt hinzugefügt. Jetzt fehlt mir noch die Komponente.

himitsu 13. Jan 2023 15:48

AW: Vom Programm aus auf Webseitenelemente zugreifen
 
Das mit der Registry hat nichts mit Delphi zu tun.
Es macht Windows innerhalb der ActiveX-Komponente, welche Delphi hier nutzt.



Ohhh, das ist natürlich etwas unpraktisch. :oops:

Nja, erstmal kannst dir ja im TWebBrowser anzeigen lassen, was du eigentlich aktuell hast,
bzw. es von Seiten des Delphi-Codes auslesen.


JavaScript: navigator.appName , navigator.appVersion und navigator.userAgent

oder HTML-Conditionals:
HTML-Code:
<!--[if IE 6]> IE6 <![endif]-->
<!--[if IE 7]> IE7 <![endif]-->
<!--[if IE 8]> IE8 <![endif]-->
...

Phoenix 13. Jan 2023 15:56

AW: Vom Programm aus auf Webseitenelemente zugreifen
 
Zitat:

Zitat von himitsu (Beitrag 1517400)
oder HTML-Conditionals:
HTML-Code:
<!--[if IE 6]> IE6 <![endif]-->
<!--[if IE 7]> IE7 <![endif]-->
<!--[if IE 8]> IE8 <![endif]-->
...

Die Seite ist wohl eher nicht seine, so das er das nicht machen kann.

Delphi.Narium 13. Jan 2023 16:09

AW: Vom Programm aus auf Webseitenelemente zugreifen
 
Dafür kann man doch auch eine eigene, lokale, HTML-Datei nehmen, es geht doch nur darum herauszufinden, welche IE-Version auf dem eigenen Rechner ist bzw. welche IE-Version vom TWebBrowser im Delphi-2010-Programm emuliert wird. (Und mit der lokalen HTML-Datei kann man dann ggfls. auch prüfen, ob Änderungen in der Registry beim TWebBrowser "ankommen".)

Wenn man das weiß, kann man prüfen, welche IE-Version die Webseite (mindestens) benötigt und dann (mit ein bisserl Glück) für das eigene Programm den erforderlichen Wert in der Registry eintragen. Wird von der WebSeite eine höhere IE-Version benötigt, als man auf dem Rechner hat, wird's halt vergebliche Liebesmüh.

Weitere Werte für die Registry, die eventuell zum Erfolg führen könnten: Internet Feature Controls (B..C)

omnibrain 13. Jan 2023 16:35

AW: Vom Programm aus auf Webseitenelemente zugreifen
 
Zitat:

Zitat von Rued (Beitrag 1517396)
@omnibrain:
  • Habe den Registry-Eintrag erfolglos gemacht.

Hast du "programmname.exe" durch den Dateinamen deines Programmes ersetzt?
Zitat:

Zitat von Rued (Beitrag 1517396)
@omnibrain:
  • Mit der WebView2-Komponente scheint mein Delphi 2010 überfordert zu sein, jedenfalls kann es mit dem Package von nuget nichts anfangen. [Vorausgesetzt, ich habe mit "microsoft.web.webview2.1.0.1462.37.nupkg" das richtige heruntergeladen.]

Aktualisierung zu Punkt 2:
Die WebView2Loader.dll habe ich zu meinen dlls geschoben und das Post-Build-Ereignis im Projekt hinzugefügt. Jetzt fehlt mir noch die Komponente.

Vergiss alles was du zu Delphi und WebView2 (TEdgeBrowser) gelesen hast. Ausschlaggebend ist die Anleitung bei https://www.briskbard.com/index.php?...pageid=webview ab "Installation" für das von mir verlinkte.

himitsu 13. Jan 2023 17:27

AW: Vom Programm aus auf Webseitenelemente zugreifen
 
Zitat:

Zitat von Phoenix (Beitrag 1517401)
Die Seite ist wohl eher nicht seine, so das er das nicht machen kann.

Er kann aber erstmal eine eigene Testseite laden und schauen was der IE macht. :stupid:


Alle Zeitangaben in WEZ +1. Es ist jetzt 10:48 Uhr.
Seite 1 von 2  1 2      

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