![]() |
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:
Es gibt in dem ganzen HTML Source keine <form>. Ich hoffe jemand weiß wie ich Text "eingeben" kann und suchen lassen kann.
<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>
Vielen Dank im voraus PS.: Ich habe eine mitm Attacke gemacht und weiß nun was er aufruft. Trotzdem würde es mich noch interessieren. |
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:
Hier suchen wir nach einem Input-Feld mit dem Placeholder-Text. Wir haben ja sonst keinen Anhaltspunkt.
const inputField = document.querySelector('input[placeholder="Wonach suchen Sie?"]');
Der <button> liegt im gleichen Div wie auch das Eingabefeld, also können wir uns dann von dort aus weiterhangeln.
Code:
Eingeben und suchen kannst Du dann folgendermassen:
const button = inputField.parentElement.querySelector('button');
Code:
inputField.value = 'suchtext';
button.click(); |
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 |
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. |
AW: Auf HTML Seite Feld ausfüllen
Achso, nun hab ich kapiert. Manchmal hab ich ne lange Leitung. :oops:
|
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:
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.
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();'); 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. |
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. |
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.
|
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!? |
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();'); |
AW: Auf HTML Seite Feld ausfüllen
Nein, dann geht gar nichts mehr.
|
AW: Auf HTML Seite Feld ausfüllen
hast du meine editierte Version verwendet?
|
AW: Auf HTML Seite Feld ausfüllen
Jop, per Copy & Paste... das hier.
Delphi-Quellcode:
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();'); EDIT:
Code:
Da gehören 2 Spaces rein. Nach dem ?. Das habe ich gemacht dann trägt er wieder was ein. Aber es läuft genauso vorher.
Wonach suchen Sie? (Tipp:
|
AW: Auf HTML Seite Feld ausfüllen
Ich habe noch getestet und dabei ist mir aufgefallen das er meint, in input würde nichts drinstehen.
Das heißt natürlich um Umkehrschluss das das button.click klappt. Er nimmt es halt nicht weil seiner Meinung nach nichts eingetragen wurde. Vielleicht fällt noch jemanden etwas ein... |
AW: Auf HTML Seite Feld ausfüllen
Vielleicht hilft es ja zwischen dem Setzen des Values und dem ButtonClick ein ProcessMessages und/oder Sleep einzubauen!?
|
AW: Auf HTML Seite Feld ausfüllen
Das habe ich schon alles versucht. Auch button.click("Sony");. Ich bin auf die blödesten Sachen gekommen.
Ich habe auch mal FireFox installiert um mal das inputfeld zu unter suchen. Da habe ich festgestellt das 4 js Routinen aufgerufen werden. Die kann man beim FF einzeln abschalten. Da gibt es eine keypress. Die muss als einziges an bleiben, dann merkt er das man etwas ins Feld eingetragen hat (natürlich von Hand). Aber wenn ich input.keypress("S"); aufrufe meint er immer noch das nichts eingegeben wurde. Trotzdem danke |
AW: Auf HTML Seite Feld ausfüllen
Und sowas?
Code:
WVBrowser.ExecuteScript('inputField.dispatchEvent(new KeyboardEvent("keypress", {"key": "a"}));');
|
AW: Auf HTML Seite Feld ausfüllen
Nein, auch nix. Ich glaube wir vergessen es. Folgenden Code habe ich genutzt.
Delphi-Quellcode:
Ich danke dir für deine Hilfe.
WVBrowser.ExecuteScript('var inputField = document.querySelector(''input[placeholder="Wonach suchen Sie? (Tipp: Suche mit englischen Begriffen)"]'');');
WVBrowser.ExecuteScript('var button = inputField.parentElement.querySelector(''button'');'); WVBrowser.ExecuteScript('inputField.dispatchEvent(new KeyboardEvent("keypress", {"key": "a"}));'); Sleep(1000); Writeln(WVBrowser.ExecuteScript('button.click();')); |
Alle Zeitangaben in WEZ +1. Es ist jetzt 11:39 Uhr. |
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