Der Index lag außerhalb des Bereichs. Er darf nicht negativ und kleiner als die Sammlung sein. Parametername: index

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

Es gibt 2 Antworten in diesem Thema. Der letzte Beitrag () ist von seby1302.

    Der Index lag außerhalb des Bereichs. Er darf nicht negativ und kleiner als die Sammlung sein. Parametername: index

    Hallo ich habe noch ein Kleinen anlegen.


    Beim Durchsuchen der Frames auf der Seiten bekomme ich den Fehler.

    Der Index lag außerhalb des Bereichs. Er darf nicht negativ und kleiner als die Sammlung sein. Parametername: index

    WebBrowser.IsLoading Und WebBrowser.IsBrowserInitialized Sind Drinnen Bringt mir aber nix, da zu der Zeit die Frame ID 0 ist.

    Nun müsste ich also auswerten das er weiter sucht bis es welchen findet, und den Fehler ignoriert oder ka. was!?
    P.s wenn ich lange genug warte dann funktioniert alles so wie es soll.

    Der Inhalt ändert sich aber nie gleich schnell etc deshalb bringt mir eine pause nicht wirklich viel.

    Mein Code:

    VB.NET-Quellcode

    1. iframeCounter += 1
    2. If iframeCounter > 20 Then
    3. iframeCounter = 0
    4. End If
    5. Friend iframeFound As String
    6. Friend iframeCounter As Integer
    7. Friend resultiframes As String
    8. Friend frameIdent As List(Of Long)
    9. frameIdent = Form1.WebBrowsercoin.GetBrowser().GetFrameIdentifiers()
    10. resultiframes = Form1.WebBrowsercoin.GetBrowser().GetFrame(frameIdent(iframeCounter)).GetSourceAsync().Result 'Hier der Fehler, Aber ?(
    11. iframeFound = resultiframes.ToString()


    Wie stelle ich das am besten an?
    p.s es Gibts bis zur 20 Framen und der Name Ändert sich ständig, Die Frame die sich im ID1 Befindet kann sich im nexte Moment auf ID 5 Befinden, deshalb so mit dem Framen Counter.
    Lg


    Dieser Beitrag wurde bereits 3 mal editiert, zuletzt von „seby1302“ ()

    seby1302 schrieb:

    GetFrame(frameIdent(iframeCounter))
    Du hast hier einen doppelten Zugriff.
    Pack mal frameIdent(iframeCounter) in eine separate Variable.
    Und dann dies:
    Debuggen, Fehler finden und beseitigen
    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!
    So Optimal Null Fehler Alles wird sofort erkannt ohne Verzögerungen, und auch dann wen der Browser mal länger braucht um laden


    VB.NET-Quellcode

    1. Dim iframeCounter As Integer = 0
    2. Public Sub IframGraber(ByVal ClickName As String, ByVal SpezifischeString As String )
    3. If Not String.IsNullOrEmpty(iframeFound) AndAlso iframeFound.Contains(ClickName) AndAlso SpezifischeString.Contains("Das was man sucht1") Then
    4. Form1.WebBrowser.GetBrowser().GetFrame(frameIdent(iframeCounter)).EvaluateScriptAsync("document.getElementsByClassName('" + ClickName + "')[0].click();")
    5. Claimsteps += 1
    6. Form1.LabelClaimsteps.Text = Claimsteps.ToString
    7. endif
    8. 'Nexte if If Not String.IsNullOrEmpty(iframeFound) AndAlso iframeFound.Contains(ClickName) AndAlso SpezifischeString.Contains("Das was man sucht2") Then
    9. With Form1.WebBrowser
    10. frameIdent = .GetBrowser.GetFrameIdentifiers()
    11. iframeCounter += 1
    12. If iframeCounter > 20 Then
    13. iframeCounter = 0
    14. End If
    15. Form1.Labelcountiframes.Text = iframeCounter.ToString
    16. Try
    17. resultiframes = Form1.WebBrowser.GetBrowser.GetFrame(frameIdent(iframeCounter)).GetSourceAsync().Result
    18. iframeFound = resultiframes.ToString()
    19. Catch ex As Exception
    20. Console.WriteLine(" Frame ID Error : " & ex.Message)
    21. End Try
    22. End With
    23. End Sub


    :whistling:

    Dieser Beitrag wurde bereits 9 mal editiert, zuletzt von „seby1302“ ()