Problem mit Random

  • hi, ich bins mal wieder ^^

    Ich hab im folgenden Code festgelegt, dass er bei einem Counter < 3
    einen Random Befehl ausführt und mit dessen Wert dann eine bestimmte Seite öffnet. Das ganze ist in einer Dauerschleife. Kann man aber verhindern, dass er bei nächsten Durchlauf vll noch einmal dieselbe Seite anklickt? (also eine gewisse Kontrolle des Zufalls^^ bewirken)

    Danke im vorraus.

    Spoiler anzeigen
    [autoit][/autoit] [autoit][/autoit] [autoit]

    #include <IE.au3>
    $oIE=_IECreate("http://",0,1)
    $counter=0

    [/autoit] [autoit][/autoit] [autoit]

    While 1
    _IELoadWait($oIE) ; warten bis Seite geladen
    $counter=$counter+1

    If $counter<3 Then
    $seite=Random(1,4,1)
    If $seite=1 Then
    $oDocLinks = _IELinkGetCollection ($oIE); gibt links als Collection aus
    For $olink IN $oDocLinks
    if StringInStr ( $olink.outerText , "items") Then ; der anzuklickende Link
    $zeit=Random(40312,47623,1)
    sleep($zeit) ; gibt zufallswert aus und Sleep übernimmt den Wert
    $olink.click() ; der Klick auf den Link
    ExitLoop
    EndIf
    Next

    ElseIf $seite=2 Then
    $oDocLinks = _IELinkGetCollection ($oIE); gibt links als Collection aus
    For $olink IN $oDocLinks
    if StringInStr ( $olink.outerText , "modifikationen") Then ; der anzuklickende Link
    $zeit=Random(35001,55131,1)
    sleep($zeit) ; gibt zufallswert aus und Sleep übernimmt den Wert
    $olink.click() ; der Klick auf den Link
    ExitLoop
    EndIf
    Next

    ElseIf $seite=3 Then
    $oDocLinks = _IELinkGetCollection ($oIE); gibt links als Collection aus
    For $olink IN $oDocLinks
    if StringInStr ( $olink.outerText , "die story") Then ; der anzuklickende Link
    $zeit=Random(40878,49851,1)
    sleep($zeit) ; gibt zufallswert aus und Sleep übernimmt den Wert
    $olink.click() ; der Klick auf den Link
    ExitLoop
    EndIf
    Next

    ElseIf $seite=4 Then
    $oDocLinks = _IELinkGetCollection ($oIE); gibt links als Collection aus
    For $olink IN $oDocLinks
    if StringInStr ( $olink.outerText , "underground") Then ; der anzuklickende Link
    $zeit=Random(38543,51923,1)
    sleep($zeit) ; gibt zufallswert aus und Sleep übernimmt den Wert
    $olink.click() ; der Klick auf den Link
    ExitLoop
    EndIf
    Next

    EndIf
    EndIf
    WEnd

    [/autoit] [autoit][/autoit] [autoit][/autoit] [autoit][/autoit]

    2 Mal editiert, zuletzt von Vaniax (14. Januar 2007 um 19:04)

  • ok danke dafür. Ich hab nur nen bissl Probleme das is meinen Code einzufügen :tier: .
    Könntest du vll.... ;)
    Ich probier aber selber auch nochmal.

  • schauste da

    Spoiler anzeigen
    [autoit]

    Global $LastRandom
    #include <IE.au3>
    $oIE=_IECreate("http://",0,1)
    $counter=0

    While 1
    _IELoadWait($oIE) ; warten bis Seite geladen
    $counter=$counter+1
    $LastRandom = 0
    If $counter<3 Then
    $seite=Random(1,4,1)
    If $seite=1 Then
    If $LastRandom = 1 Then
    ;nix neue random zahl ermitteln
    Else
    $LastRandom = 1
    $oDocLinks = _IELinkGetCollection ($oIE); gibt links als Collection aus
    For $olink IN $oDocLinks
    if StringInStr ( $olink.outerText , "items") Then ; der anzuklickende Link
    $zeit=Random(40312,47623,1)
    sleep($zeit) ; gibt zufallswert aus und Sleep übernimmt den Wert
    $olink.click() ; der Klick auf den Link
    ExitLoop
    EndIf
    Next
    EndIf
    ElseIf $seite=2 Then
    If $LastRandom = 2 Then
    ;nix neue random zahl ermitteln
    Else
    $LastRandom = 2
    $oDocLinks = _IELinkGetCollection ($oIE); gibt links als Collection aus
    For $olink IN $oDocLinks
    if StringInStr ( $olink.outerText , "modifikationen") Then ; der anzuklickende Link
    $zeit=Random(35001,55131,1)
    sleep($zeit) ; gibt zufallswert aus und Sleep übernimmt den Wert
    $olink.click() ; der Klick auf den Link
    ExitLoop
    EndIf
    Next
    EndIf
    ElseIf $seite=3 Then
    If $LastRandom = 3 Then
    ;nix neue random zahl ermitteln
    Else
    $LastRandom = 3
    $oDocLinks = _IELinkGetCollection ($oIE); gibt links als Collection aus
    For $olink IN $oDocLinks
    if StringInStr ( $olink.outerText , "die story") Then ; der anzuklickende Link
    $zeit=Random(40878,49851,1)
    sleep($zeit) ; gibt zufallswert aus und Sleep übernimmt den Wert
    $olink.click() ; der Klick auf den Link
    ExitLoop
    EndIf
    Next
    EndIf
    ElseIf $seite=4 Then
    If $LastRandom = 4 Then
    ;nix neue random zahl ermitteln
    Else
    $LastRandom = 1
    $oDocLinks = _IELinkGetCollection ($oIE); gibt links als Collection aus
    For $olink IN $oDocLinks
    if StringInStr ( $olink.outerText , "underground") Then ; der anzuklickende Link
    $zeit=Random(38543,51923,1)
    sleep($zeit) ; gibt zufallswert aus und Sleep übernimmt den Wert
    $olink.click() ; der Klick auf den Link
    ExitLoop
    EndIf
    Next
    EndIf
    EndIf
    EndIf
    WEnd

    [/autoit]
  • Vielen Dank dafür.
    Werds gleich mal testen. Aber ich geh stark davon aus, dass es einwandfrei funktioniert ;)

    • Offizieller Beitrag

    Hier meine Lösung für dich:

    Spoiler anzeigen
    [autoit]

    #include <IE.au3>
    Dim $oIE=_IECreate("http://",0,1)
    Dim $counter=0, $LastRandom = 1

    While 1
    _IELoadWait($oIE) ; warten bis Seite geladen
    $counter=$counter+1

    If $counter<3 Then
    $seite=Random(1,4,1)

    If $seite=1 And $seite <> $LastRandom Then
    $oDocLinks = _IELinkGetCollection ($oIE); gibt links als Collection aus
    For $olink IN $oDocLinks
    if StringInStr ( $olink.outerText , "items") Then ; der anzuklickende Link
    $zeit=Random(40312,47623,1)
    sleep($zeit) ; gibt zufallswert aus und Sleep übernimmt den Wert
    $olink.click() ; der Klick auf den Link
    ExitLoop
    EndIf
    Next
    $LastRandom = $seite

    ElseIf $seite=2 And $seite <> $LastRandom Then
    $oDocLinks = _IELinkGetCollection ($oIE); gibt links als Collection aus
    For $olink IN $oDocLinks
    if StringInStr ( $olink.outerText , "modifikationen") Then ; der anzuklickende Link
    $zeit=Random(35001,55131,1)
    sleep($zeit) ; gibt zufallswert aus und Sleep übernimmt den Wert
    $olink.click() ; der Klick auf den Link
    ExitLoop
    EndIf
    Next
    $LastRandom = $seite

    ElseIf $seite=3 And $seite <> $LastRandom Then
    $oDocLinks = _IELinkGetCollection ($oIE); gibt links als Collection aus
    For $olink IN $oDocLinks
    if StringInStr ( $olink.outerText , "die story") Then ; der anzuklickende Link
    $zeit=Random(40878,49851,1)
    sleep($zeit) ; gibt zufallswert aus und Sleep übernimmt den Wert
    $olink.click() ; der Klick auf den Link
    ExitLoop
    EndIf
    Next
    $LastRandom = $seite

    ElseIf $seite=4 And $seite <> $LastRandom Then
    $oDocLinks = _IELinkGetCollection ($oIE); gibt links als Collection aus
    For $olink IN $oDocLinks
    if StringInStr ( $olink.outerText , "underground") Then ; der anzuklickende Link
    $zeit=Random(38543,51923,1)
    sleep($zeit) ; gibt zufallswert aus und Sleep übernimmt den Wert
    $olink.click() ; der Klick auf den Link
    ExitLoop
    EndIf
    Next
    $LastRandom = $seite
    Else ; ElseIf-Zweig konnte nicht gewählt werden, da $seite = $LastRandom
    $counter -= 1 ; Counter zurücksetzen, da in diesem Durchlauf nix passierte
    EndIf
    EndIf
    WEnd

    [/autoit]

    Ich glaube der Counter ist wichtig, darum setze ich ihn bei Leerlauf zurück.

  • Jo, das mit dem Counter zurücksetzten ist ganz gut.
    Auch dank an dich.

    Nun hab ich nochmal ne andere Frage.
    Wie bring ich den IE dazu, dass er immer maximiert gestartet wird?
    Hab grad gemerkt, dass die Mouskoordinaten nicht ganz passen, weil er nicht voll maximiert ist.

  • [autoit]

    #include <IE.au3>
    $sUrl = "http://localhost/bla.html"
    $oIE = _IECreate ($sUrl,0,1)
    $oHWND = _IEPropertyGet($oIE, "hwnd")
    WinSetState ($oHWND, "", @SW_MAXIMIZE )

    [/autoit]
  • Vielen Dank. Funzt bestens.
    Werd mich mal dran machen um auch zu verstehn, was ihr da so gemacht habt.

    Danke für eure Hilfe