Sleep durch Schleife ersetzen

  • Hallo zusammen,

    für eine meiner Websites schreibe ich gerade einen Test. Besonders wichtig ist mir die Durchlaufzeit des Tests. Derzeit arbeite ich noch mit einem Sleep, welches die Durchlaufzeit künstlich steigert. Leider habe ich noch keine Vorstellung wie ich meine Funktion umbauen kann, deswegen benötige ich Hilfe.

    [autoit]

    Func roleLogin ()
    Local $sMyString = "Admin"
    Local $oLinks = _IELinkGetCollection($oIE)
    For $oLink In $oLinks
    Local $sLinkText = _IEPropertyGet($oLink, "innerText")
    If StringInStr($sLinkText, $sMyString) Then
    _IEAction($oLink, "click")
    ExitLoop
    EndIf
    Next

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

    Sleep (10000)
    Local $loginPageTitle = _IEPropertyGet($oIE,"title")
    Local $searchFound = (StringInStr ( $loginPageTitle, "Center"))
    If $searchFound > 0 Then
    $statusCheck = 1
    $result = $result & 'Search: OK, '
    Else
    $statusLogin = 0
    $result = $result & 'Search: ERROR, '
    EndIf

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

    EndFunc

    [/autoit]

    Das Problem ist folgendes:
    Nachdem ich meine Login-Daten eingegeben habe und den Button betätige, läuft eine Statusseite die mich verbindet (Daraus resultiert der Sleep). Erst dann kommt die eigentlich Seite, auf der ich die Titelabfrage "Center" mache.

    Mein Ziel ist es nun den Sleep durch eine Schleife auszutauschen, weiß aber leider noch nicht wie. Am besten wäre, glaube ich, eine Schleife, die sich permanent aufrugt, solange sie den Titel "Center" nicht aufrufen kann?! Kann mir jemand nützliche Tipps geben?

    Vielen Dank!

  • Dazu nimmt man Unittest z.B: https://phpunit.de/

    Da es ja deine Webseite ist und damit ja auch den Code hast ist das der beste und zuverlässigste Weg.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Ohne phpunit würde ich das dann in etwa so machen...

    Spoiler anzeigen
    [autoit]

    #include-once
    #include <IE.au3>
    #include <Math.au3>

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

    Local $oIE = _IE_Example("basic") ; for testing

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

    $iLoginTime = _RoleLogin()
    If @error Then
    ConsoleWrite("!@ Ops, no internet connection?" & @CRLF)
    Exit 1
    Else
    ConsoleWrite("!@ Login time = " & $iLoginTime & " = ms" & @CRLF)
    EndIf

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

    Func _RoleLogin($iTimeOut = 10000, $iDelay = 0)

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

    Local _
    $sMyString = "Admin", _
    $sLinkText = "", _
    $oLinks = _IELinkGetCollection($oIE)

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

    For $oLink In $oLinks
    $sLinkText = _IEPropertyGet($oLink, "innerText")
    If StringInStr($sLinkText, $sMyString) Then
    _IEAction($oLink, "click")
    ExitLoop
    EndIf
    Next

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

    While StringInStr(_IEPropertyGet($oIE,"title"), "Center") = 0 Or $iTimeOut <> 0
    Sleep($iDelay) ; Default = 0 ms
    If $iTimeOut = -1 Then ContinueLoop ; -1 = endlos warten
    $iTimeOut -= 1
    WEnd

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

    If $iTimeOut = 0 Then Return SetError(1, 0, 0)

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

    Return $iTimeOut / _Max(1, $iDelay)
    EndFunc

    [/autoit]