Form Submit mit dem WebBrowser Control

    • VB.NET

    Es gibt 52 Antworten in diesem Thema. Der letzte Beitrag () ist von brennbolle.

      Was hat Bilderladen mit einem Form Submit zu tun?? O.o

      @ kwockor: Mein Code funktioniert nur mit dem WebBrowser Control.
      Ob die GeckoFX Engine gleiche Namespaces nutzt weiß ich nicht. Das müsstest dann selber probieren, eine art Anleitung wie es gehen soll haste ja hier.
      Ok, dann eröffne ich noch einen extra Therd ~

      Ich übe mich gerade noch ein bissl.

      Ich hab folgenden Code:

      VB.NET-Quellcode

      1. Public Sub SubmitWEB()
      2. For Each Elements As HtmlElementCollection In myBrowser.Document.Forms.GetElementsByName("setp1:forward")
      3. For Each Element As HtmlElement In Elements
      4. If Element.Name = "step1:forward" Then
      5. LastHtmlElement = Element
      6. Dim submitelement As HtmlElement = GetForm(LastHtmlElement)
      7. submitelement.InvokeMember("submit")
      8. End If
      9. Next
      10. Next
      11. End Sub

      Das soll eigentlich den Web.de Registrierungsbutton klicken, aber es passiert nix. Mit der Submit Funktion die dabei war gehts auch nicht.
      Was tun?
      Hallölle, ich find den thread spitze :) aber nun meine frage

      ich möchte das gern mit dem GeckoWebbrowserControl nutzen, was muss ich daran alles ändern? weil im moment schreibt der mit ein Error

      Der Wert vom Typ "Skybound.Gecko.GeckoWebBrowser" kann nicht in "System.Windows.Forms.WebBrowser" konvertiert werden.


      und die zeile wo er rummuckt lautet
      Dim myForm As New GeckoWebBrowserForm(GeckoWebBrowser1)
      @devilofcrash: [VB 2008] Form Submit mit dem WebBrowser Control
      Mit dem Gecko habe ich mich bisher nie befasst, somit müsstest du selbst schauen welche Methoden er zur verfügung stellt. Ein Schema wie es funktioniert hast du ja in meinem Beispiel.

      @raupy: du verwendest ja überhaupt nicht meine Klasse, außer GetForm(). Dann erschließt mir nicht der Sinn des ganzen. Was ist "step1:forward" eine Form, ein Inputelement, ein Button? Zudem hast du in der ersten Zeile bereits einen Fehler und zwar suchst du nach dem Element "setp1:forward". Wieso aber noch eine Schleife dadruch? und dann nochmals prüfen ob ein Element den Namen "step1:forward" hat? Mit GetElementByID() bekommst du doch bereits dieses Element.

      Wenn das ein Button sein soll dann müsste dein Code nur folgendermaßen aussehen:

      VB.NET-Quellcode

      1. Dim ElementInForm As HtmlElement = myBrowser.Document.GetElementById("step1:forward")
      2. Dim myForm As HtmlElement = GetForm(ElementInForm)
      3. myForm.InvokeMember("submit")


      So müsste das glaube ich aussehen. GetForm() erwartet halt irgendein HTML Element, welches sich in der Form befindet, dann durchläuft diese Funktion rekusiv alle HtmlElemente bis die übergeordnete Form gefunden wurde, dieses Element wird dann zurückgegeben und kann via InvokeMember abgeschickt werden.
      Guten tag,

      Ich habe noch eine frage zu diesem "Skript"
      Folgendes:Ich will einen Button ohne id anwählen :
      Der QuelText ist dieser:
      "&nbsp; <input class="btnmain" type="submit" accesskey="s" tabindex="6" name="post" value="Absenden" />"
      Sry das ich das hier nochmal anstocherer aber kann ich irgendwie diesen button Drücken (ohne humane einwirkung ;) )?

      VB.NET-Quellcode

      1. Dim ElementInForm As HTMLElement = WB.Document.All.getElementsByName("post")(x)

      wobei x Standardmäßig den Wert 0 haben sollte, gibt es jedoch noch mehr Elemente, welche den Namen Post besitzen, musst du gucken, an wie vielter stelle das zu suchende Element steht(oder das Array zu durchlaufen und mit anderen Zusätzlichen kriterien überprüfen)
      Ich wollte auch mal ne total überflüssige Signatur:
      ---Leer---
      Ah vielen dank,

      Mfg Dachir



      ahmm leider funktieoniert das ganze immernochnicht ;( ,es ist ausschlich ein button mit namen "Post"

      Ja ich weiss ich wirke wahrscheinlich unglaublich naiv....und Arrogant und dreist. :wacko:

      Dennoch wurde mich eine antwort freuen

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

      hmmm dann ware aber auch mein geheimplan rückverfolgbar :S
      Ahmm ich poste mal einen größeren teil der Seite ok?Danke.
      "<tr>
      <td class="cat" colspan="2" align="center">
      <input class="btnlite" type="submit" tabindex="5" name="preview" value="Vorschau" />
      &nbsp; <input class="btnmain" type="submit" accesskey="s" tabindex="6" name="post" value="Absenden" />
      &nbsp; <input class="btnlite" type="submit" accesskey="k" tabindex="7" name="save" value="Entwurf speichern" />
      &nbsp; <input class="btnlite" type="submit" accesskey="c" tabindex="9" name="cancel" value="Abbrechen" />
      </td>
      </tr>

      "
      Normalerweise würdest du ja das zeug wie oben mit ner ID suchen.
      Du kannst aber auch sagen
      WebBrowser.Document.GetElementsByTagName("input")(n)
      gibt das n-te Input-Element zurück. Bei dir gibts 4 submit-Buttons, also kommen für n werte von 0 bis 3 infrage.
      Hey..
      ich habe noch ein Problem..
      Ich möchte ein Button klicken was mir aber nicht so ganz gelingt.
      Es ist der 2 Button auf der seite..

      Habe das jetzt versucht :

      VB.NET-Quellcode

      1. Dim ElementInForm As HtmlElement = WebBrowser1.Document.GetElementById("send")
      2. Dim myForm As HtmlElement = GetForm(ElementInForm)
      3. myForm.InvokeMember("submit")


      Leider bekomme ich eine Fehlermeldung wegen dem GetForm :

      Quellcode

      1. Fehler 1 "GetForm" wurde nicht deklariert. Auf das Objekt kann aufgrund seiner Schutzstufe möglicherweise nicht zugegriffen werden.


      Ich hoffe Ihr könnt mir helfen.