3sec warten bevor Quelltext geladen wird

  • VB.NET
  • .NET (FX) 4.5–4.8

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

    3sec warten bevor Quelltext geladen wird

    Hallo ich habe ein Problem mit mein code beim downloaden des Quelltext .

    Ich lade dies mit dim quelltextloader as string Webbrowser1.Documenttext.toString
    Und werte dann den inhalt mit regex aus.
    Was super funktioniert.

    Allerdings gibt es ein timer den ich auslesen muß.
    Dieser steht beim laden des Quelltext auf 00:00 und wird erst nach etwa 3 sec auf den eigentlichen Countdown generiert.

    Ich habe es mit sleep (××) probiert aber es kommt immer 00:00.

    Wie mache ich das?

    Schreibe vom Handy der obere code ist nur ein Beispiel

    Mfg
    Geht nicht wie deklariere ich es?


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

    VB.NET-Quellcode

    1. Threading.Thread.Sleep(3000)


    Bleibt zwahr 3 sec lang stecken danach läft alles wie vorher 00:00

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

    Ich hab mir den Post 3 mal durchgelesen und weiß immer noch nicht was du wirklich machen willst (abgesehen von dem Download und der Auswertung eines Quelltextes).

    Bitte beschreibe dein Vorhaben genauer. Am Besten auch mit Code den du bereits hast.

    lg
    ScheduleLib 0.0.1.0
    Kleine Lib zum Anlaufen von Code zu bestimmten Zeiten
    @Omaa gennau das habe ich probiert nachdem
    da Thread.Sleep(3000)
    fehler ausgibt:

    VB.NET-Quellcode

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


    Wen ich Thread deklarere funzt es trozdem nicht.

    Also Gennauere beschreibung:

    VB.NET-Quellcode

    1. WebBrowser1.Navigate("url...")
    2. While WebBrowser1.ReadyState blabla...


    Liest den timer aus der Quelltext

    VB.NET-Quellcode

    1. Dim eingabe2 As String = WebBrowser1.DocumentText.ToString
    2. Dim TimehRegEx As New Regex("\<span id=\""countdown_hour\"" class=\""countdown_item\"">(?<string>(.*))\</span>")
    3. Dim Timeh As String = TimehRegEx.Match(eingabe2).Groups("string").ToString()
    4. Label66.Text = Timeh


    Mein proplem ist jetzt das der timer 00:00
    Ist und erst 3 secunden später auf 1:60:60 um schaltet

    wie kan ich also den quelltext 3 secunden später erst laden?

    Mfg

    RushDen schrieb:

    Sicher dass WebClient hier nicht das richtige ist?

    Auserdem gibts das DocumentCompleted Event welches geworfen wird wenn eine Seite geladen wurde


    Ich kann mit dem WebClient hier nichts anfangen, da ich im webbrowser mich in das spiel einloge Und erst dann den queltext auslese.
    Oder wie kann ich den bereits vorhandenen login am WebClient übermitteln?

    diavolo schrieb:

    webbrowser
    WebBrowser.DocumentCompleted
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!

    RodFromGermany schrieb:

    diavolo schrieb:

    webbrowser
    WebBrowser.DocumentCompleted


    Also bei mir sieht es ja momentan so aus, was ist da dran falsch:??
    Ist das nicht ein DocumentCompleted event?

    VB.NET-Quellcode

    1. WebBrowser1.Navigate("URl..")
    2. didWeNavigated = True
    3. While WebBrowser1.ReadyState <> WebBrowserReadyState.Complete
    4. Application.DoEvents()
    5. End While


    VB.NET-Quellcode

    1. Dim eingabe As String = WebBrowser1.DocumentText.ToString

    diavolo schrieb:

    RushDen schrieb:

    Sicher dass WebClient hier nicht das richtige ist?

    Auserdem gibts das DocumentCompleted Event welches geworfen wird wenn eine Seite geladen wurde


    Ich kann mit dem WebClient hier nichts anfangen, da ich im webbrowser mich in das spiel einloge Und erst dann den queltext auslese.
    Oder wie kann ich den bereits vorhandenen login am WebClient übermitteln?


    Dann mach das ganze über Httpwebrequest's (Einloggen inklusive)

    edit:
    Wo ist da ein Event?
    Events Abonnieren und Kündigen
    Das Event das du abonnieren musst ist das DocumentCompleted Event
    (Ich hoffe den Code kriegst du selber hin)
    Wenn du einen WebBrowser als Control auf deiner Form hat wäre es einfach einfach das bereits beschriebene WebBrowser.DocumentCompleted zu verwenden. Ansonsten probiers mal so:

    VB.NET-Quellcode

    1. Do Until WebBrowser1.ReadyState = WebBrowserReadyState.Complete
    2. '...
    3. Loop

    diavolo schrieb:

    was ist da dran falsch?
    Du wartest nicht auf das Event, sondern Du pollst in einer quasi Endlosschleife, das ist ein NoGo.
    Mach es im Eventhander:

    VB.NET-Quellcode

    1. Private Sub WebBrowser1_DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
    2. ' etwas tun
    3. End Sub
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hallo habe es jetzt verändert aber es tut sich gennau so wenig wie vorher auch, Geladenes zeit 00:00

    VB.NET-Quellcode

    1. Private Sub WebBrowser1_DocumentCompleted(sender As Object, e As WebBrowserDocumentCompletedEventArgs) Handles WebBrowser1.DocumentCompleted
    2. sleep1(5000)
    3. Dim eingabe2 As String = WebBrowser1.DocumentText.ToString
    4. Dim TimehRegEx As New Regex("\<span id=\""countdown_hour\"" class=\""countdown_item\"">(?<string>(.*))\</span>")
    5. Dim Timeh As String = TimehRegEx.Match(eingabe2).Groups("string").ToString()
    6. Label66.Text = Timeh
    7. End Sub


    @RodFromGermany Natürlich nicht , so in etwa der code ist lang darum hatte ich nur das nötigste gepostet

    VB.NET-Quellcode

    1. Private Sub LoginToolStripMenuItem_Click(sender As Object, e As EventArgs) Handles LoginToolStripMenuItem.Click
    2. If (WebBrowser1.ReadyState = WebBrowserReadyState.Complete) Then
    3. Dim eingabe2 As String = WebBrowser1.DocumentText.ToString
    4. Dim TimehRegEx As New Regex("\<span id=\""countdown_hour\"" class=\""countdown_item\"">(?<string>(.*))\</span>")
    5. Dim Timeh As String = TimehRegEx.Match(eingabe2).Groups("string").ToString()
    6. Label66.Text = Timeh
    7. End If
    8. End Sub


    wenn man es sofort ausliest manual in Firefox getestet...

    HTML-Quellcode

    1. <div id="auction_countdown">
    2. L'asta termina tra
    3. <span id="countdown_hour" class="countdown_item">00:00</span>
    4. <span id="countdown_day" class="countdown_item">00:00:00</span>
    5. <span id="countdown_week" class="countdown_item">00:00:00:00</span>
    6. </div>


    Wenn man wartet bis geladen wurde, manual ausgelesen in ff

    HTML-Quellcode

    1. <div id="auction_countdown">
    2. L'asta termina tra
    3. <span id="countdown_hour" class="countdown_item">28:45</span>
    4. <span id="countdown_day" class="countdown_item">16:28:45</span>
    5. <span id="countdown_week" class="countdown_item">04:16:28:45</span>
    6. </div>


    EDIT:
    Ok hatt sich fast erledigt ich weiß jetzt wieso er nur den 00:00 laden kann....
    Etwas weiter oben im Quelltext steht

    HTML-Quellcode

    1. var counterHour = {
    2. second: 32,
    3. minute: 17,
    4. hour: 0,
    5. day: 0
    6. }
    7. var counterDay = {
    8. second: 32,
    9. minute: 17,
    10. hour: 16,
    11. day: 0
    12. }
    13. var counterWeek = {
    14. second: 32,
    15. minute: 17,
    16. hour: 16,
    17. day: 4
    18. }


    Jetzt muss ich das nur noch mit regex richtig laden X/

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „diavolo“ ()