auf Webseite einloggen

  • VB.NET

Es gibt 13 Antworten in diesem Thema. Der letzte Beitrag () ist von jvbsl.

    auf Webseite einloggen

    Hallo,

    ich möchte mit dem Webbrowser auf eine Seite navigieren (webbrowser.navigate("")) und will dass er dort das login ausführt, wenn er damit fertig ist (und Erfolg hat), soll er auf einen anderen Link der Seite und dort eine Textarea-Box füllen und auf den Submit button drücken. Wie könnte man das ungefähr realisieren?

    Danke schon mal!
    Entschuldigung, dass ich mich so unklar ausgedrückt hab. Ich hab schon eine Code, der aber nicht so ganz funktioniert: Der Webbrowser ist kommt nicht ans Ziel ?(
    Hier mal mein Code:

    Quellcode

    1. With Webbrowser1
    2. .Document.Forms(0).Document.GetElementById("email-label").InnerText = username.Text
    3. .Document.Forms(0).Document.GetElementById("email-email").InnerText = username.Text
    4. .Document.Forms(0).Document.GetElementById("password-password").InnerText = password.Text
    5. .Document.Forms(0).Document.GetElementById("password-clear").InnerText = password.Text
    6. .Document.Forms(0).Document.All("sumbitLogin").InvokeMember("Click")
    7. .Navigate("http://www.xxxx.com/xxx") 'Hier ist er zu schnell, anscheindend
    8. .Document.Forms(0).Document.GetElementById("adresses").InnerText = "text" 'textarea
    9. .Document.Forms(0).InvokeMember("Post")
    10. End With


    Kurz: wie kann ich überprüfen ob ich eingeloggt bin, oder wie kann ich das .navigate warten lassen?
    So du schickst den Webbrowser zur Login Seite. Lasst ihn alles eintragen, schickst es ab.
    Da wartest du bist der Webbrowser fertig geladen hat mit den DocumentCompleted Event.
    Überprüfst dann ob das Login erfolgreich war in dem du den Innhalt des Webbrowser vergleichst oder es ändert sich
    Vielleicht auch der Titel. Wenn das Login erfolgreich war Navigierst du den Webbrowser zu deinen Link und fühlst die Textarea-Box aus.
    Das Problem dabei ist, sobald ich den einen Teil im DocumentCompleted Event habe, bekomm ich ein Error weil das ausfüllen schneller ist als das Seite öffnen:

    Quellcode

    1. With Webbrowser
    2. .Navigate("http://www.XXX.com/")
    3. .Document.Forms(0).Document.GetElementById("email-label").InnerText = username.Text 'E-Mail Adresse
    4. .Document.Forms(0).Document.GetElementById("email-email").InnerText = username.Text 'E-Mail Adresse
    5. .Document.Forms(0).Document.GetElementById("password-password").InnerText = password.Text 'Passwort
    6. .Document.Forms(0).Document.GetElementById("password-clear").InnerText = password.Text 'Passwort
    7. .Document.Forms(0).Document.All("sumbitLogin").InvokeMember("Click")
    8. End With
    9. Private Sub Webbrowser_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles Webbrowser.DocumentCompleted
    10. Dim strLine As String
    11. Dim text(20) As String
    12. Dim objStreamReader As StreamReader = New StreamReader("C:\Users\XXX\Desktop\XXX\XXX.txt")
    13. strLine = objStreamReader.ReadLine
    14. Dim g As Integer
    15. For i = 1 To 20
    16. g = i - 1
    17. strLine = objStreamReader.ReadLine()
    18. text(g) = strLine
    19. Next
    20. objStreamReader.Close()
    21. Webbrowser.Document.Forms(0).Document.GetElementById("adresses").InnerText = " Hallo "
    22. Webbrowser.Document.Forms(0).InvokeMember("Post")
    23. Webbrowser.Navigate("http://www.XXX.com/XXX")
    24. End Sub
    Versuch ma den Code. Müsste funken!

    VB.NET-Quellcode

    1. Private Sub WebBrowser1_DocumentCompleted(ByVal sender As System.Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
    2. If WebBrowser1.Url.ToString = "http://www.XXX.com/" Then ' Login Seite
    3. If WebBrowser1.DocumentText = "Ein bestimmter Text der nur beim erfolgreich Login kommt" Then
    4. 'Login erfolgreich
    5. WebBrowser1.Navigate("http://www.XXX.com/XXX") ' Seite wo die Textarea-Box ist
    6. End If
    7. ElseIf WebBrowser1.Url.ToString = "http://www.XXX.com/XXX" Then ' Seite wo die Textarea-Box ist
    8. ' Textarea-Box ausfühlen!
    9. End If
    10. End Sub
    11. Private Sub Form1_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
    12. WebBrowser1.Navigate("http://www.XXX.com/") ' Login Seite
    13. WebBrowser1.Document.Forms(0).Document.GetElementById("email-label").InnerText = username.Text 'E-Mail Adresse
    14. WebBrowser1.Document.Forms(0).Document.GetElementById("email-email").InnerText = username.Text 'E-Mail Adresse
    15. WebBrowser1.Document.Forms(0).Document.GetElementById("password-password").InnerText = password.Text 'Passwort
    16. WebBrowser1.Document.Forms(0).Document.GetElementById("password-clear").InnerText = password.Text 'Passwort
    17. WebBrowser1.Document.Forms(0).Document.All("sumbitLogin").InvokeMember("Click")
    18. End Sub
    mach noch ein Not dazu dann passt eher^^

    aber mach am besten doch einfach alles im DocumentCompleted Event und einen Counter, bei dem du überprüftst, was gerade gemacht werden soll...
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---
    Ich habe das selbe Problem gehabt. Ich habe folgendes eigebaut. Dann funktionierte es.

    VB.NET-Quellcode

    1. READYSTATE_COMPLETE = 4
    2. Set MeinIE = CreateObject("InternetExplorer.Application")
    3. MeinIE.Visible = 1 ' In den Vordergrund
    4. MeinIE.Navigate site ' Variable Site in die Adressleiste schreiben
    5. Do While MeinIE.ReadyState <> 4
    6. ' Warten bis der IE die Site komplett geladen hat
    7. Loop
    8. ' Zeitverzögerung einbauen
    9. Application.Wait DateAdd("s", 5, Now) ' Erste Möglichkeit 5 Sekunden
    10. wscript.sleep "3000" 'Zweite Möglichkeit 3000 ms
    man kann es auch in VB machen, man sollte es aber nicht, da dies eigt. immer veraltete Funktionen/Methoden sind(CreateObject gehört auch dazu...)
    Ich wollte auch mal ne total überflüssige Signatur:
    ---Leer---