Textbox Leert sich sofort Wieder von alleine..

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von Marcus Gräfe.

    Textbox Leert sich sofort Wieder von alleine..

    Hallo Leute, ich habe Ein Kleines Komisches Problem.

    Mit

    VB.NET-Quellcode

    1. ChromiumWebBrowser1.ExecuteScriptAsync("document.getElementsByClassName('by-input__inner')[5].focus();")
    2. ChromiumWebBrowser1.ExecuteScriptAsync("document.getElementsByClassName('by-input__inner')[5].value = '5';")

    Sende ich Meine Value am TextBox, Hier Nr5.
    Dieser kommt auch an, wird aber Sofort wieder Gelöscht.
    Mit und ohne Focus ändert sich nix.

    HTML-Quellcode

    1. <div class="by-input by-input-number oc__row-item by-input--gc-2 by-input--outlined by-input--x-large">
    2. <div class="by-input__container"><span class="gc-04 by-input__left-icon"> </span><span class="by-input__wrapper flex"><input class="by-input__inner" type="text" value="">
    3. </span><span class="by-input__right-icon"><span>USD</span></span></div></div>


    Bei den anderen Classen habe ich auch probiert, dort kommt aber Überhaupt nix an. :huh:

    Probiert habe ich auch, erst einmal ein Klick und danach erst die Value zu senden, dann kommt aber Überhaupt nix mehr an..

    VB.NET-Quellcode

    1. ChromiumWebBrowser1.ExecuteScriptAsync("document.getElementsByClassName('by-input__inner')[5].click();")
    2. ChromiumWebBrowser1.ExecuteScriptAsync("document.getElementsByClassName('by-input__inner')[5].value = '5';")


    Jemand Eine Idee?

    *Topic verschoben*

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Marcus Gräfe“ ()

    Nur ein Schuss ins sehr, sehr Blaue, weil ich gerade zufällig so ein Problem habe/hatte: Wird auf der Seite, wo du den Wert einfügst, vielleicht via JavaScript geprüft, ob man manuell was eingetippt hat? Ich kenne es von vielen Formularen heutzutage, dass beim Einfügen von Inhalten durch Browser-Addons oder externe Programme der Wert nicht akzeptiert und entweder sofort oder beim Klick auf Absenden entfernt wird. Meist wird geprüft, ob das Ereignis "oninput" ausgeführt wurde. Das wird nämlich nur bei echten Texteingaben (manuell, aus Zwischenablage oder via Autocomplete im Browser) ausgeführt. Soll wohl das automatisierte Ausfüllen verhindern.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Ja würde ich so Vermuten, Clicks Etc Kommen alles an Allerdings nur auf Buttons nicht auf TextBoxen.
    Wie hast du das Gelöst?
    Ich Könnte natürlich Versuchen ob Per SendMessage Dort was ankommt, nicht so elegant aber immerhin etwas. X/

    EDIT:
    Mit SendMessage und SendKeys Funktioniert es wie Erwartet.
    Problematisch wird es nur, wen man das Fenster minimiert, dann sind ja die Koordinaten des Fenster x,y = 0

    VB.NET-Quellcode

    1. ​ Hwnd = Win32.FindWindow("WindowsForms10.Window.8.app.0.141b42a_r8_ad1", Nothing)
    2. Chwnd = Win32.FindWindowEx(Hwnd, Nothing, "WindowsForms10.SysTabControl32.app.0.141b42a_r8_ad1", Nothing)
    3. Chwnd2 = Win32.FindWindowEx(Chwnd, Nothing, "WindowsForms10.Window.8.app.0.141b42a_r8_ad1", Nothing)
    4. Chwnd3 = Win32.FindWindowEx(Chwnd2, Nothing, "WindowsForms10.Window.8.app.0.141b42a_r8_ad1", Nothing)
    5. Chwnd4 = Win32.FindWindowEx(Chwnd3, Nothing, "CefBrowserWindow", Nothing)
    6. Chwnd5 = Win32.FindWindowEx(Chwnd4, Nothing, "Chrome_WidgetWin_0", Nothing)
    7. Chwnd6 = Win32.FindWindowEx(Chwnd5, Nothing, "Chrome_RenderWidgetHostHWND", Nothing)
    8. If Not Chwnd6 = IntPtr.Zero Then
    9. Win32.SendMessage(Chwnd6, WM_LBUTTONDOWN, CType(MK_LBUTTON, IntPtr), CType(MakeDWord("1717", "224"), IntPtr))
    10. Win32.SendMessage(Chwnd6, WM_LBUTTONUP, CType(0, IntPtr), CType(MakeDWord("1717", "224"), IntPtr))
    11. My.Computer.Keyboard.SendKeys("122154", True)
    12. End If


    Alternative? Lg seby

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „seby1302“ ()

    Das ist es ja, Click und Focus Kommen Dort nicht an per js.
    Auf Buttons ja, Textfeld Nein.

    Mit SendMessage kommen die Klicks bei X,Y an.
    Blöd ist nur das Sendkeys Einfach frei sendet, wen man also nebenbei woanders unterwegs ist....

    Leider habe ich nie Hinbekommen mit SendMessage ein Text bei X,Y Zu senden.
    Nur X,Y oder Nur Text, aber wie kann ich ein Text an die Koordinaten senden Mit SendMessage?
    Was wenn du ein Element vorher(Tab-Reihenfolge) focussierst und entsprechend viele Tab's sendest. So sollte der Focus auch im Textfeld ankommen. Kannst auch eins danach wählen und SHIFT+TAB senden.

    Ansonsten evtl. einfach sowas mal probieren:
    stackoverflow.com/questions/10…out-actually-pressing-key

    Marcus meinte ja, das könnnte ein Script sein, das sicherstellt das es sich um echte Usereingaben handelt, das sollte man alles faken können.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Takafusa“ ()

    Komische ist...

    Mit SendMessage kann ich genau 1x der Fokus setzen, dann mit Sendkey, PostMessage, STRG+V, und es kommt an.

    Danach ist der auf nimmer wieder sehen weg.
    Hab auch Versucht direkt danach Den Click an andre Koordinaten zu senden und dann Erneut im TextBox, nix zu machen....

    P.s
    Wenn ich selbst Auf den TextBox den Focus setze mit der Maus, dann kommen die Kleys immer an, egal ob Sendkey, PostMessage, STRG+V.
    Auch nach Focus weg, und erneut setzen.

    Einzige was ich jetzt noch wohl tun kann...
    Werte resetten, Seite Neu laden vor jede Eingabe, dann funktioniert es....

    Nicht grade die Sauberste art.
    Zwar würde das maximal 1x am tag sein, aber zwischen eine Eingabe und der andre, bleibt mir kaum zeit... Am Besten Null..
    Die Seite Neu laden ist naja....

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „seby1302“ ()

    seby1302 schrieb:

    Wie hast du das Gelöst?

    Eigentlich gar nicht, weil in meinem Fall war es ein fremdes Browserplugin. Da hoffe ich noch auf eine Änderung seitens des Herstellers. Aber man müsste das Ereignis "oninput" manuell triggern, nachdem man den Wert eingetragen hat.

    So in der Art: ChromiumWebBrowser1.ExecuteScriptAsync("let element = document.getElementsByClassName('by-input__inner')[5]; element.dispatchEvent(new Event("input"));")

    Ungetestet, Quelle: stackoverflow.com/questions/24…igger-event-in-javascript
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum

    VB.NET-Quellcode

    1. let element =


    Das Ruft dann

    VB.NET-Quellcode

    1. element.dispatchEvent(new Event('input'));")


    auf? oder wie soll ich das Verstehen.

    Jedoch Kommt da Überhaupt nix an.

    Ich hab es so Probiert, Er sendet es..
    Wird sofort Gelöscht..
    Dann kommt nix mehr an.

    VB.NET-Quellcode

    1. ​ChromiumWebBrowser1.ExecuteScriptAsync("let element = document.getElementsByClassName('by-input__inner')[0].value = '99999'; element.dispatchEvent(new Event('input'));")

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „seby1302“ ()

    Eigentlich solltest du erst deine value-Zeile 1:1 lassen und danach meine Zeile benutzen. Ich weiß nicht und glaube auch nicht, dass diese doppelte Zuweisung mit 2x "=" funktioniert.
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum
    Dann hilft nur rausfinden, was die Seite prüft bzw. woran sie erkennt, dass keine echte Eingabe erfolgt ist. Und das muss man dann aushebeln. ;)
    Besucht auch mein anderes Forum:
    Das Amateurfilm-Forum