WebBrowser - Button anklicken, die 102.

  • VB.NET

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von Spider39.

    WebBrowser - Button anklicken, die 102.

    HTML-Quellcode

    1. <input class="loginbutton" tabindex="104" value="Anmelden" title="Gib zur Anmeldung deinen Benutzernamen und dein Kennwort in die dafür vorgesehenen Textfelder ein oder klicke auf die 'Registrieren'-Schaltfläche, um ein neues Benutzerkonto anzulegen." accesskey="s" type="submit">

    Das ist der Button, um den es geht.
    Der hat keine ID, die ich mal eben nutzen könnte. :pinch:
    Wie kriege ich den jetzt geklickt? Kann mir jemand nen Schubs in die richtige Richtung geben?

    (Das ist jetzt mein erster Versuch, automatisch etwas mit nem WebBrowser auszufüllen, daher... :P)

    Edit: Ich habs hinbekommen, jetzt brauche ich Hilfe bei nem anderen Button:

    HTML-Quellcode

    1. <a onclick="return log_out('Möchtest du dich wirklich abmelden?')" href="http://www.faq4mobiles.de/forum/login.php?do=logout&amp;logouthash=1285875384-12fb79cdd4e8347113a4b5bc223ce3b65dab0292" rel="nofollow">Abmelden</a>

    Da komme ich echt nicht weiter.

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

    HTML Elemente rekursiv durchgehen und solange suchen bis InnerHTML = "Abmelden" is.

    Edit: Weiß ja nicht wie den Submit gelöst hast, aber ich habe hier mal bei Tipps und Tricks was gepostet wie man den Form Submit auslöst

    [VB 2008] Form Submit mit dem WebBrowser Control

    dort wird eine Rekursive Schleife genutzt um von einem bekannten Input Element bis zur Form zu kommen wo dann das Submit Event ausgelöst wird.
    Diese Schleife nur andersrum kannst du ebenfalls verwenden.

    Samus Aran schrieb:

    Das ist jetzt mein erster Versuch, automatisch etwas mit nem WebBrowser auszufüllen, daher

    Wunderte mich schon, sonst postest Du doch eher für Fortgeschrittene :)

    Wenn Du ein HTMLElement hast, kannst Du Ereignisse mit InvokeMember auslösen, z.B.:

    VB.NET-Quellcode

    1. Dim loginBtn As HtmlElement = getElementById("loginBtn")
    2. loginBtn.InvokeMember("click")

    Das Input Element kannst Du , wenn es keine Id hat, auch über den Index ansprechen Forms(0).GetElementsdByTagName(3)
    Ich möchte mich nur in nem vBulletin-Forum ein- und ausloggen können, den Login hab ich fertig, der funktioniert auch perfekt, nur das Ausloggen bereitete mir Probleme. :D
    Da ich gerade mit Ubuntu unterwegs bin, teste ich den Code morgen irgendwann, danke schonmal :)
    @Dodo: wie meinst du das mit HtmlElemente rekursiv durchlaufen bis "Abmelden" gefunden wurde?

    Ich habe folgende Seite:

    PHP-Quellcode

    1. <html>
    2. <head>
    3. <title>Test</title>
    4. </head>
    5. <body text="#000000" bgcolor="#FFFFFF" link="#FF0000" alink="#FF0000" vlink="#FF0000">
    6. Menu:
    7. <br>
    8. <a href="kunden_anlegen.html">Kunden anlegen</a>
    9. <br>
    10. <a href="kundenabfrage.php">Kunden anzeigen</a>
    11. </body>
    12. </html>


    Ich möchte dort auf den Link "Kunden anlegen" klicken. Ich habe deiner Klasse folgende Funktion hinzugefügt:

    VB.NET-Quellcode

    1. Private Function GetLink(ByVal CurrentHtmlElement As HtmlElement) As HtmlElement
    2. Try
    3. If CurrentHtmlElement.InnerHtml.ToString() = "Kunden anlegen" Then
    4. Return CurrentHtmlElement
    5. Else
    6. Return GetForm(CurrentHtmlElement.Parent)
    7. End If
    8. Catch ex As Exception
    9. Return Nothing
    10. End Try
    11. End Function


    VB.NET-Quellcode

    1. Public Sub Click()
    2. Dim LinkElement As HtmlElement = GetLink(LastHtmlElement)
    3. LinkElement.InvokeMember("Kunden anlegen")
    4. End Sub


    Wenn ich aber die Seite nun lade bekomme ich immer den Fehler "Der Objektverweis wurde nicht auf eine Objektinstanz festgelegt"

    Auf einen "normalen" Button klicken funktioniert bei mir...

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