AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Vom Programm aus auf Webseitenelemente zugreifen
Thema durchsuchen
Ansicht
Themen-Optionen

Vom Programm aus auf Webseitenelemente zugreifen

Ein Thema von Rued · begonnen am 13. Jan 2023 · letzter Beitrag vom 14. Jan 2023
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von Rued
Rued

Registriert seit: 14. Mai 2008
Ort: Schleching
75 Beiträge
 
Delphi 12 Athens
 
#1

Vom Programm aus auf Webseitenelemente zugreifen

  Alt 13. Jan 2023, 13:29
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.
Miniaturansicht angehängter Grafiken
fehler.jpg  
Rüdiger Droste
  Mit Zitat antworten Zitat
omnibrain

Registriert seit: 11. Nov 2022
73 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Vom Programm aus auf Webseitenelemente zugreifen

  Alt 13. Jan 2023, 14:10
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?

Geändert von omnibrain (13. Jan 2023 um 14:12 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#3

AW: Vom Programm aus auf Webseitenelemente zugreifen

  Alt 13. Jan 2023, 15:38
Der TWebBrowser lässt sich auch auf Edge umstellen,
bzw. direkt TEdgeBrowser.

Delphi-Referenz durchsuchenTWebBrowser.SelectedEngine = EdgeOnly oder EdgeIfAvailable
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Rued
Rued

Registriert seit: 14. Mai 2008
Ort: Schleching
75 Beiträge
 
Delphi 12 Athens
 
#4

AW: Vom Programm aus auf Webseitenelemente zugreifen

  Alt 13. Jan 2023, 16:14
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.
Rüdiger Droste
  Mit Zitat antworten Zitat
Benutzerbild von Rued
Rued

Registriert seit: 14. Mai 2008
Ort: Schleching
75 Beiträge
 
Delphi 12 Athens
 
#5

AW: Vom Programm aus auf Webseitenelemente zugreifen

  Alt 13. Jan 2023, 16:25
@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.
Rüdiger Droste

Geändert von Rued (13. Jan 2023 um 16:43 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#6

AW: Vom Programm aus auf Webseitenelemente zugreifen

  Alt 13. Jan 2023, 16:48
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.

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]-->
...
$2B or not $2B
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.641 Beiträge
 
#7

AW: Vom Programm aus auf Webseitenelemente zugreifen

  Alt 13. Jan 2023, 16:56
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.
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.508 Beiträge
 
Delphi 7 Professional
 
#8

AW: Vom Programm aus auf Webseitenelemente zugreifen

  Alt 13. Jan 2023, 17:09
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)
  Mit Zitat antworten Zitat
omnibrain

Registriert seit: 11. Nov 2022
73 Beiträge
 
Delphi 11 Alexandria
 
#9

AW: Vom Programm aus auf Webseitenelemente zugreifen

  Alt 13. Jan 2023, 17:35
@omnibrain:
  • Habe den Registry-Eintrag erfolglos gemacht.
Hast du "programmname.exe" durch den Dateinamen deines Programmes ersetzt?
@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.
  Mit Zitat antworten Zitat
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#10

AW: Vom Programm aus auf Webseitenelemente zugreifen

  Alt 13. Jan 2023, 18:27
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.
$2B or not $2B
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:16 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