Else Funktioniert nicht...

PH234X

Mitglied
Hallo.
Bei einem Scripth von mir funktioniert irgendwie die Else-Funktion nicht.
Sonst geht sie immer
Das ganze Sieht so aus

Code:
Public Class Form1
    Shared vEmail As String


    Private Sub wbemail_DocumentCompleted

        If wbEmail.Document.GetElementById("messageCount").InnerText = "Du hast zurzeit 0 Mitteilungen." Then
MsgBox("Nichts")
        Else
            MsgBox("Etwas")
        End If
        twait.Enabled = True
    End Sub

    Private Sub bstart_Click
        bstart.Enabled = False
        wbEmail.Navigate("http://eine-homepage.com/")
    End Sub

    Private Sub twait_Tick
        wbEmail.Refresh()
    End Sub
End Class

So das ganze Etwas vereinfacht.

Und wenn eine Mail im Postkasten ist kommt auch die MsgBox mit "Nichts" nicht mehr aber halt auch nicht die mit "Etwas"

Was mache ich falsch?
 
Mach mal einen Breakpoint auf dein If, und schau nach, was wirklich in wbEmail.Document.GetElementById("messageCount").InnerText steht.

Vielleicht ist da noch ein Leerzeichen mehr oder sonstwas auf diese Art.

lg,..
 
Ich vermute der Event-Handler ist nicht mehr so wie er sein sollte, kann das sein? D.h. bist du sicher, dass die Prozedur überhaupt irgendwann mal aufgerufen wird?
So wie du schreibst vermute ich einfach mal, dass die entscheidende Zeile so heißen müsste:
Code:
Private Sub wbemail_DocumentCompleted Handles wbemail.DocumentCompleted
 
Da will ich auch meinen Senf dazu geben:

ich würde ein .ToLower() auf den InnerText machen und ein .Contains auf " 0 mitteilungen"
 
Danke für all eure Antworten =)

Mach mal einen Breakpoint auf dein If, und schau nach, was wirklich in wbEmail.Document.GetElementById("messageCount").InnerText steht.

Vielleicht ist da noch ein Leerzeichen mehr oder sonstwas auf diese Art.

lg,..

Ja, der Text ist richtig.
Das was bei der If steht macht er ja auch Nur nicht bei der Else.

Ich vermute der Event-Handler ist nicht mehr so wie er sein sollte, kann das sein? D.h. bist du sicher, dass die Prozedur überhaupt irgendwann mal aufgerufen wird?
So wie du schreibst vermute ich einfach mal, dass die entscheidende Zeile so heißen müsste:
Code:
Private Sub wbemail_DocumentCompleted Handles wbemail.DocumentCompleted

Orginal heißt es
Code:
Private Sub wbemail_DocumentCompleted(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles wbemail.DocumentCompleted
Ich habe es nur ein wenig vereinfacht..


Da will ich auch meinen Senf dazu geben:

ich würde ein .ToLower() auf den InnerText machen und ein .Contains auf " 0 mitteilungen"

Und wie soll das dann aussehen? habe noch nie mit ToLower() und Contains gearbeitet ..













Und hier einmal die Unbearbeitete Version (Außer die URL):


Code:
Public Class Form1
    Shared vEmail As String


    Private Sub wbemail_DocumentCompleted(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles wbemail.DocumentCompleted

        If wbEmail.Document.GetElementById("messageCount").InnerText = "Du hast zurzeit 0 Mitteilungen." Then

        Else
            MsgBox("JEHAA")
            wbEmail.Document.GetElementById("emailTable:0:j_id35").InvokeMember("Click")
        End If
        twait.Enabled = True
    End Sub

    Private Sub bstart_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles bstart.Click
        bstart.Enabled = False
        wbEmail.Navigate("Homepage.de")
    End Sub

    Private Sub twait_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles twait.Tick
        wbEmail.Refresh()
    End Sub
End Class
 
Zuletzt bearbeitet:
Lass dir doch mal zu dem "Nichts" noch den Text aus .InnerText mit ausgeben und schau mal ob da das drin steht was du erwartest...
 
Lass dir doch mal zu dem "Nichts" noch den Text aus .InnerText mit ausgeben und schau mal ob da das drin steht was du erwartest...

ok,
Mal sehn

EDIT//
Ok ich weiß wo das Problem liegt.
Er zeigt, obwohl ich eine Nachicht habe noch an, dass ich noch 0 Nachichten hätte.
Aber wie lasse ich das Programm den Unterschied dann erkennen
Vielen Dank,
M4st3r

EDIT2///
Jawoll ich habs geschafft.
Es so gelöst:

Code:
    Private Sub wbemail_DocumentCompleted(ByVal sender As Object, ByVal e As System.Windows.Forms.WebBrowserDocumentCompletedEventArgs) Handles wbemail.DocumentCompleted
        vEmail = wbEmail.Document.GetElementById("addyForm:addressSelect").GetAttribute("value")

        Try
            wbEmail.Document.GetElementById("emailTable:0:j_id35").InvokeMember("Click")
        Catch
        End Try
        twait.Enabled = True
    End Sub

Er probiert einfach auf die Email zu Klicken, und da, wenn noch keine im Postkasten ist die ID "emailTable:0:j_id35" nicht existiert Geht er dann zu Catch über und macht nichts.
Wenn die Email dann drinne ist, öffnet er sie ^^
Not macht Erfinderisch.
Danke an alle
 
Zuletzt bearbeitet:

Neue Beiträge

Zurück