Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Netzwerke (https://www.delphipraxis.net/14-netzwerke/)
-   -   Delphi Auf HTML Seite Feld ausfüllen (https://www.delphipraxis.net/216046-auf-html-seite-feld-ausfuellen.html)

DelTurbo 18. Okt 2024 13:14


Auf HTML Seite Feld ausfüllen
 
Hi,
ich möchte auf einer HTML-Seite ein Feld ausfüllen und auf die Lupe klicken. Natürlich per Software. Bei einer "normalen" Form weiß ich wie das geht. Aber das hier bringt mich um das bissll verstand was ich noch habe. Es sieht wie folgt aus...

Code:
<div data-v-3f9000bc="" data-v-68db1b7e="" class="search-bar"><div data-v-3f9000bc="" class="search-textbox"><input data-v-3f9000bc="" type="text" placeholder="Wonach suchen Sie?"><button data-v-3f9000bc=""><svg data-v-3f9000bc="" class="svg-inline--fa fa-search fa-w-16" aria-hidden="true" focusable="false" data-prefix="far" data-icon="search" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512"><path class="" fill="currentColor" d="DATEN"></path></svg></button></div><!----></div>
Es gibt in dem ganzen HTML Source keine <form>. Ich hoffe jemand weiß wie ich Text "eingeben" kann und suchen lassen kann.

Vielen Dank im voraus

PS.: Ich habe eine mitm Attacke gemacht und weiß nun was er aufruft. Trotzdem würde es mich noch interessieren.

Phoenix 18. Okt 2024 13:50

AW: Auf HTML Seite Feld ausfüllen
 
Das <input type="text" /> ist das Eingabefeld, und der <button /> wird wohl die Suche auslösen.

Du kannst also mittels JavaScript die Elemente finden.
Zum Beispiel das Eingabefeld:

Code:
const inputField = document.querySelector('input[placeholder="Wonach suchen Sie?"]');
Hier suchen wir nach einem Input-Feld mit dem Placeholder-Text. Wir haben ja sonst keinen Anhaltspunkt.
Der <button> liegt im gleichen Div wie auch das Eingabefeld, also können wir uns dann von dort aus weiterhangeln.

Code:
const button = inputField.parentElement.querySelector('button');
Eingeben und suchen kannst Du dann folgendermassen:

Code:
inputField.value = 'suchtext';
button.click();

DelTurbo 18. Okt 2024 14:21

AW: Auf HTML Seite Feld ausfüllen
 
Erstmal danke. Aber nun bin ich verwirrt. Ich habe mittlerweile WebView4Delphi und CEF4 Probiert.

Ich weiß wie ich damit die Seite laden kann. Das ist immer die gleiche Seite. Also suchen werde ich nicht müssen.

Nun zu meiner Frage: Kannst du mir eventuell die 2 Zeilen als Pascal Quelltext schreiben? Entweder mit WebView4Delphi oder CEF4 (bitte bei schreiben was du genommen hast).

Vielen Dank

himitsu 18. Okt 2024 15:27

AW: Auf HTML Seite Feld ausfüllen
 
@Phoenix
const? :shock:
[edit] Achso, im JavaScript, nicht im Delphi. :oops: (dort ist sowas Grauenhaftes Eigenartiges ja normal) [/edit]

"Suchen" meint, dass du dir die Instanz dieses Elements im DOM besorgst (nicht die Definition im XML-Text)
und damit kannst du dann was machen.

DelTurbo 19. Okt 2024 09:05

AW: Auf HTML Seite Feld ausfüllen
 
Achso, nun hab ich kapiert. Manchmal hab ich ne lange Leitung. :oops:

DelTurbo 19. Okt 2024 11:09

AW: Auf HTML Seite Feld ausfüllen
 
Leider klappt der "click" nicht. Ich mache das mit WebView2Delphi. Hier das was ich mache. Im Suchfeld kann man "Sony" sehen.

Delphi-Quellcode:
    WVBrowser.ExecuteScript('const inputField = document.querySelector(''input[placeholder="Wonach suchen Sie?  (Tipp: Suche mit englischen Begriffen)"]'');');
    WVBrowser.ExecuteScript('const button = inputField.parentElement.querySelector(''button'');');
    WVBrowser.ExecuteScript('inputField.value = ''Sony'';');
    WVBrowser.ExecuteScript('button.click();');
Nachtrag: Trage ich von Hand Samsung ein, dann klappt der click. Lasse ich das Script durch laufen kann ich nicht mal mehr per Hand klicken.
Der Testablauf: Seite kommt. Ich klicke auf einen Button der den Code oben ausführt. Dann kann ich nicht mehr auf den button klicken. Änder ich den Test von Hand und lasse das Skript wieder laufen klappt der klick. Er trägt zwar wieder Sony ein, aber gesucht wird nach dem Wort was ich eingetippt habe.

Olli73 19. Okt 2024 11:29

AW: Auf HTML Seite Feld ausfüllen
 
Ist die Seite auch zuvor vollständig geladen?

Der Button hat kein onClick oder Ähnliches. Da gibt es im Hintergrund bestimmt noch etwas Javascript für.

DelTurbo 19. Okt 2024 11:33

AW: Auf HTML Seite Feld ausfüllen
 
Jop, die Seite ist komplett geladen. Deswegen habe ich mich erstmal dafür entschieden selber das Script zu starten. Trage ich z.b. Samsung ein und Starte dann das Script, dann steht dort wieder Sony, aber der klickt geht. Allerdings sucht er dann nach Samsung. Nicht nach dem was im Suchfeld steht.

Olli73 19. Okt 2024 12:01

AW: Auf HTML Seite Feld ausfüllen
 
Dann würde ich das mal in zwei Schritten machen: Zuerst den Text setzen und in einem zweiten Befehl den Button drücken.

Edit: Du scheinst es ja schon in 4 Befehlen zu machen!?

Olli73 19. Okt 2024 12:04

AW: Auf HTML Seite Feld ausfüllen
 
geht das?

Code:
    WVBrowser.ExecuteScript('var inputField = document.querySelector(''input[placeholder="Wonach suchen Sie? (Tipp: Suche mit englischen Begriffen)"]'');');
    WVBrowser.ExecuteScript('inputField.value = ''Sony'';');
    WVBrowser.ExecuteScript('var inputField = document.querySelector(''input[value="Sony"]'');');
    WVBrowser.ExecuteScript('var button = inputField.parentElement.querySelector(''button'');');
    WVBrowser.ExecuteScript('button.click();');


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:17 Uhr.
Seite 1 von 2  1 2      

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