Mein kleines Projekt ist scheinbar doch nicht so einfach zu realisieren: Aufbauzeit von einer Website messen!

  • Hallo! Ich habe mir ein kleines Projekt überlegt: Ich möchte die Zeit , die eine Webseite zum Aufbau benötigt messen. Man soll vorher in das Pogrammfenster die Adresse eingeben können und dann nach dem "GO" klicken die Zeit live sehen. Im hintergrund öffnet sich der IE und ein Stoppuhr-Script wird ausgeführt. Das Ergebnis soll in einer Datei gespeichert werden.

    Mein Haupt-Script siet so aus:

    [autoit]

    #include <GUIConstants.au3>
    #include <IE.au3>
    #include <WindowsConstants.au3>
    #include <Date.au3>

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

    Dim $Start = 0, $Timer = 0, $tmpTimer = 0, $LastTimer = 0, $run = 1
    Dim $iHours = 0, $iMins = 0, $iSecs = 0, $iHsecs = 0

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

    #Region ### START Koda GUI section ### Form=d:\users\xxxx\desktop\autoit - skripte\ie\ie.kxf
    $Form1_1 = GUICreate("Zeitmessung", 360, 189, 193, 125)
    $Adresse = GUICtrlCreateInput("", 8, 32, 281, 21)
    $Go = GUICtrlCreateButton("Go!", 296, 32, 41, 25, 0)
    $Status = GUICtrlCreateLabel("Adresse eintragen und dann Go!", 8, 56, 274, 73)
    $Zeit = GUICtrlCreateLabel("00:00:00.00", 16, 144, 270, 33)
    GUISetState(@SW_SHOW) ;GUI anzeigen
    #EndRegion ### END Koda GUI section ###

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

    $Go = False
    $Datum = (@MDAY & "." & @MON & "." & @YEAR)
    IniWrite( @ScriptDir & ("\Messung.ini") , "Date", "Date: ", $Datum) ;Erstellt Ini Datei mit Datum
    IniWriteSection( @ScriptDir & "\Messung.ini" , "Zeit", "Zeit: " , ($iHours & ":" & $iMins & ":" &$iSecs & "." & $iHsecs)) ;Apeichern Zeit
    IniWriteSection( @ScriptDir & "\Messung.ini" , "Start", "Start: ", $Start) ;Setzt Start auf 0

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

    While $run = 1 ;Main Loop
    $Zeit = ($iHours & ":" & $iMins & ":" &$iSecs & "." & $iHsecs)
    Sleep(2000)
    Do
    GUICtrlSetData(-1, $Go) ;Update Gui
    If $Go = True Then ;Wenn Go gedrückt
    GUICtrlSetData($Adresse) ;Update Gui
    _IECreate ("about:blank" ,0 , 1 ,1 ,0) ;Öffnet IE
    $Status = "Seite läd..." ;eingegebene Adresse wird im Status angezeigt
    $Start = 1
    IniDelete( @ScriptDir & "\Messung.ini", "Start", "Start: ")
    IniWriteSection( @ScriptDir & "\Messung.ini", "Start", "Start: ", $Start)
    Run("IEZeit.exe", "", @SW_HIDE ) ;Stoppuhr Programm wird gestartet
    IECreate ($Adresse ,1 , 0 ,1 ,0) ;Pause bis Seite geladen ist
    EndIf
    Until $Start = 1
    IniDelete( @ScriptDir & "\Messung.ini", "Start", "Start: ")
    IniWriteSection( @ScriptDir & "\Messung.ini", "Start", "Start: ", $Start)
    $Status = "Seite geladen!"
    GUICtrlSetData(-1, $Status) ;Update Gui
    IniReadSection( @ScriptDir & "\Messung.ini" , "Zeit", "Zeit: " , ($iHours & ":" & $iMins & ":" &$iSecs & "." & $iHsecs))
    GUICtrlSetData(-1, $Zeit) ;Update Gui
    Sleep(2000)
    $Status = "Datei wurde in Messung.ini, unter " $Datum " gespeichert!"
    GUICtrlSetData(-1, $Status) ;Update Gui
    Sleep(2000)
    IniDelete( @ScriptDir & "\Messung.ini", "Start")
    $run = 0

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

    WEnd

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

    Exit

    [/autoit]

    Und mein Stoppuhr Programm so:

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

    #include <WindowsConstants.au3>
    #include <Date.au3>

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

    Dim $Timer = 0, $tmpTimer = 0, $LastTimer = 0
    Dim $iHours = 0, $iMins = 0, $iSecs = 0, $iHsecs = 0

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

    While IniRead( @ScriptDir & "\Messung.ini", "Start", "1", "0") = 1 ;Main Loop
    If $Start = 1 Then ;Only if start is pressed....
    $tmpTimer = (TimerDiff($Timer)) + $LastTimer
    Convert() ;Convert ticks to time and splitt it into HH:MM:SS.hh
    EndIf
    WEnd
    IniDelete( @ScriptDir & "\Messung.ini" , "Zeit", "Zeit: " , $iHours & ":" & $iMins & ":" &$iSecs & "." & $iHsecs )
    IniWriteSection( @ScriptDir & "\Messung.ini" , "Zeit", "Zeit: " , $iHours & ":" & $iMins & ":" &$iSecs & "." & $iHsecs )

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

    Func Convert() ;Convert ticks to time and splitt it into HH:MM:SS.hh
    _TicksToTime($tmpTimer, $iHours, $iMins, $iSecs)
    $iHsecs = Round(($tmpTimer - (($iHours * 3600000) + ($iMins * 60000) + ($iSecs * 1000))) / 10)
    If $iHours < 10 Then $iHours = "0" & $iHours
    If $iMins < 10 Then $iMins = "0" & $iMins
    If $iSecs < 10 Then $iSecs = "0" & $iSecs
    If $iHsecs < 10 Then $iHsecs = "0" & $iHsecs
    EndFunc ;==>Convert

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

    Func End() ;Exit
    Exit
    EndFunc ;==>End

    [/autoit]

    Leider habe ich mich irgend wie verhaspelt und stecke nun fest in einem Entwicklungsstand der nicht zufriedenstellend ist^^
    -IE öffnet sich nicht mehr
    -anstelle der Zeit wird 'False' angezeigt (weiß nicht wo der fehler liegt)
    -und es lässt sich nur gewaltsam beenden


    Vielleicht seht ihr ja meine Fehler 8o Danke dass ihr mal drüber schaut! :)

    3 Mal editiert, zuletzt von Splash (26. Juni 2012 um 11:55) aus folgendem Grund: Danke!

  • Zeitdiff ist eideutig doch was für: TimerDiff ( handle )

    Lieben Gruß,
    Alina

    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

    Geheime Information: ;)
    k3mrwmIBHejryPvylQSFieDF5f3VOnk6iLAVBGVhKQegrFuWr3iraNIblLweSW4WgqI0SrRbS7U5jI3sn50R4a15Cthu1bEr

  • Willst du nur die Reine Aufbauzeit also wenn die Daten bereits vorhanden sind, den Download oder Download und Aufbau?
    Das ist ja jetzt massig Code der soweit ich das erkennen kann die Downloadzeit auch misst

  • Danke für die Antworten!
    Alina, was meinst du damit genau?

    Willst du nur die Reine Aufbauzeit also wenn die Daten bereits vorhanden sind, den Download oder Download und Aufbau?
    Das ist ja jetzt massig Code der soweit ich das erkennen kann die Downloadzeit auch misst

    Ja genau, ich möchte Download- sowie Aufbauzeit messen. Also für mich als AutoIt-Neuling müsste das doch so funktionieren oder?^^
    Seht ihr meinen Denkfehler?

  • Aina meinst zu sollt dir mal TimerDiff in der Hilfe anschauen für deine "Stoppuhr".

    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.

  • Ah okay danke!!!

    Spoiler anzeigen
    [autoit]

    #include <GUIConstants.au3>
    #include <IE.au3>
    #include <WindowsConstants.au3>
    #include <Date.au3>

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

    Dim $Start = 0, $Timer = 0, $begin = 0, $dif = 0
    Dim $iHours = 0, $iMins = 0, $iSecs = 0, $iHsecs = 0

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

    #Region ### START Koda GUI section ### Form=d:\users\xxxx\desktop\autoit - skripte\ie\ie.kxf
    $Form1_1 = GUICreate("Zeitmessung", 360, 189, 193, 125)
    $Adresse = GUICtrlCreateInput("", 8, 32, 281, 21)
    $Go = GUICtrlCreateButton("Go!", 296, 32, 41, 25, 0)
    $Status = GUICtrlCreateLabel("Adresse eintragen und dann Go!", 8, 56, 274, 73)
    $Zeit = GUICtrlCreateLabel("00:00:00.00", 16, 144, 270, 33)
    GUISetState(@SW_SHOW) ;GUI anzeigen
    #EndRegion ### END Koda GUI section ###

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

    $Datum = (@MDAY & "." & @MON & "." & @YEAR)
    IniWrite( @ScriptDir & ("\Messung.ini") , "Date", "Date: ", $Datum) ;Erstellt Ini Datei mit Datum

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

    While 1 ;Main Loop
    $Zeit = ($iHours & ":" & $iMins & ":" &$iSecs & "." & $iHsecs)
    Sleep(2000)
    Do
    GUICtrlSetData(-1, $Go)

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

    If $Go = True Then ;Wenn Go gedrückt
    GUICtrlSetData(-2, $Adresse) ;Update Gui
    $Status = "Seite läd..."
    $begin = TimerInit()
    _IECreate (($Adresse) ,0 , 0 ,1 ,0)
    $dif = TimerDiff($begin)
    EndIf
    Until $Go = True

    Convert() ;HH:MM:SS.hh
    $Zeit = ($iHours & ":" & $iMins & ":" &$iSecs & "." & $iHsecs)
    IniWrite( @ScriptDir & ("\Messung.ini") , "Adresse", "Adresse: ", $Adresse)
    IniWriteSection( @ScriptDir & "\Messung.ini" , "Zeit", "Zeit: " , ($iHours & ":" & $iMins & ":" &$iSecs & "." & $iHsecs))
    $Status = "Seite geladen!"
    GUICtrlSetData(-3, $Status) ;Update Gui
    GUICtrlSetData(-4, $Zeit) ;Update Gui
    Sleep(2000)
    $Status = "Datei wurde in Messung.ini gespeichert!"
    GUICtrlSetData(-3, $Status) ;Update Gui
    Sleep(2000)

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

    WEnd

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

    Func Convert() ;HH:MM:SS.hh
    _TicksToTime($dif, $iHours, $iMins, $iSecs)
    $iHsecs = Round(($dif - (($iHours * 3600000) + ($iMins * 60000) + ($iSecs * 1000))) / 10)
    If $iHours < 10 Then $iHours = "0" & $iHours
    If $iMins < 10 Then $iMins = "0" & $iMins
    If $iSecs < 10 Then $iSecs = "0" & $iSecs
    If $iHsecs < 10 Then $iHsecs = "0" & $iHsecs
    EndFunc

    [/autoit]


    Okay mit eurer Hilfe soweit so gut :thumbup: . Es klappt alles...bis auf die Zeit. Sie wird nicht formgerecht angezeigt, und im IE wird die Zeit anstelle der Adresse geöffnet...

  • Keine Ahnung warum so seltsam das aufbaust. Hier mal ganz simpel halt ohne ini:

    Spoiler anzeigen
    [autoit]

    #include <GUIConstantsEx.au3>
    #include <IE.au3>

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

    #region ### START Koda GUI section ### Form=d:\users\xxxx\desktop\autoit - skripte\ie\ie.kxf
    $Form1_1 = GUICreate("Zeitmessung", 360, 189, 193, 125)
    $Adresse = GUICtrlCreateInput("", 8, 32, 281, 21)
    $Go = GUICtrlCreateButton("Go!", 296, 32, 41, 25, 0)
    GUICtrlCreateLabel("Adresse eintragen und dann Go!", 8, 56, 274, 73)
    $Zeit = GUICtrlCreateLabel("", 16, 144, 270, 73)
    GUISetState(@SW_SHOW)
    #endregion ### END Koda GUI section ###

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

    While 1
    $nMsg = GUIGetMsg()
    Switch $nMsg
    Case $GUI_EVENT_CLOSE
    Exit
    Case $Go
    $url = GUICtrlRead($Adresse)
    $start = TimerInit()
    _IECreate($url)
    $diff = TimerDiff($start)
    $diff = Round($diff)
    GUICtrlSetData($zeit & " Millisekunden",$diff)
    EndSwitch
    WEnd

    [/autoit]

    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.