Automatischer Login in der Gecko Engine

  • VB.NET

Es gibt 3 Antworten in diesem Thema. Der letzte Beitrag () ist von markus.obi.

    Automatischer Login in der Gecko Engine

    hallo leute

    habe bereits einen automatischen login erstellt:

    VB.NET-Quellcode

    1. Private Sub LoginFunktion()
    2. Application.DoEvents()
    3. Do While webbrowser.ReadyState <> WebBrowserReadyState.Complete
    4. Application.DoEvents()
    5. Loop
    6. webbrowser.Document.GetElementById("xxx1").InnerText = Benutzername.Text
    7. webbrowser.Document.GetElementById("xxx2").InnerText = Passwort.Text
    8. SendKeys.Send("{ENTER}")
    9. End Sub



    Nur in der Gecko Engine funktioniert das "webbrowser.ReadyState" nicht mehr und auch nicht das ".InnerText = Benutzername.Text".

    Kann mir jemand weiterhelfen, ob das in der Gecko Engine überhaupt gemacht werden kann und wenn ja, wie ?
    Mir wäre wirklich sehr geholfen.
    5 Stunden Suche und jede Menge Suchergebnisse haben nicht weitergeholfen.

    Danke bereits im voraus.
    Ich kann dir leider nix zu Gecko sagen - Aber ich weiß eines: Verwende auf gar keinen Fall folgenden Code:

    VB.NET-Quellcode

    1. Application.DoEvents()
    2. Do While webbrowser.ReadyState <> WebBrowserReadyState.Complete
    3. Application.DoEvents()
    4. Loop


    Glaub mir, ich habe exakt diesen code früher auch mal verwendet.
    Du bekommst folgende Probleme:

    1. CPU Auslastung auf 100% solange Seite nicht geladen
    2. Regelmäßige Abstürze (Nullreferenceexception), weil manche Seiten beim Laden kurzzeitig den readystate auf completed setzen, weil einzelne Teile (Werbung etc.) teilweise nacheinander geladen werden.
    (Das Ereignis WebBrowser1.DocumentCompleted wird dann natürlich auch mehrmals ausgelößt)
    3. Du bekommst eine Endloschleife, wenn die Seite nicht lädt. Wenns ganz blöd läuft, dann läuft der Prozess sogar noch nach dem Schließen der Form1.

    Du solltest umdenken von prozedural auf ereignisorientiert. Im Webbrowser von vb.net wäre das folgender code:
    In der Variable e.Url.ToString steckt die Info welche Seite du geladen hast. Anhand dieser Info kann dein Programm entscheiden was zu machen ist.

    VB.NET-Quellcode

    1. Private Sub WebBrowser1_DocumentCompleted(ByVal sender As Object, ByVal e As WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
    2. 'dim adresse as string = e.Url.ToString
    3. End Sub

    Schau mal da rein: Klick
    Suche ob es ein entsprechendes äquvivalent zum Ereignis WebBrowser1.DocumentCompleted im Gecko gibt.
    Danke ersteinmal.
    Hat mir wirklich sehr geholfen.

    Leider besteht noch immer das Pproblem mit dem "InnerText". Ich greife auf ein Formular zu, welches nach dem Ladeabschluss der Website ausgefüllt werden. Nur funktioniert das nicht :(

    Hätte hierfür noch jemand einen guten Tipp bereit ?
    Ich hab was rausgefunden:
    1. HtmlElement entspricht dem Skybound.Gecko.GeckoElement
    2. Mit InnerText siehst da wohl ein bisschen schwieriger aus. Das funktioniert beim Gecko leicht anders. Eventuell findest du Hier etwas dazu.
    Ansonsten google nach gecko innertext. Das GeckoElement hat die Eigenschaft TextContent nur leider liefert die mir statt dem innerText öfter mal Nullreferenceexception.
    EDIT: Funktioniert doch ohne Probleme, hatte nur el.TextContent per Reference an eine Sub weitergegeben :cursing:

    VB.NET-Quellcode

    1. For Each el As Skybound.Gecko.GeckoElement In GeckoWebBrowser1.Document.GetElementsByTagName("td")
    2. MsgBox(el.TextContent)
    3. Next


    3. Für das DocumentCompleted musst du den Handler manuell hinzufügen:

    VB.NET-Quellcode

    1. Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    2. AddHandler GeckoWebBrowser1.DocumentCompleted, New EventHandler(AddressOf GeckoWebBrowser1_DocumentCompleted)
    3. End Sub
    4. Private Sub GeckoWebBrowser1_DocumentCompleted(ByVal sender As Skybound.Gecko.GeckoWebBrowser, ByVal e As EventArgs)
    5. MsgBox(sender.Url.AbsoluteUri)
    6. End Sub


    Im Vergleich zum Gecko ist der olle Webbrowser von VB.Net echt minderwertig und lahm^^

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „markus.obi“ ()