FFXPath Problem

  • Hi ich habe ein Problem ich versuche immer wieder mit FFXPath die wartezeit von etwas auzulesen aber es funktioniert nicht ich bekomme nur immer wieder.

    Wenn ich code so habe:

    [autoit]

    MsgBox(64,"Zeit",_FFXPath("//span[@id='timer_remaining']"))

    [/autoit]


    [Blockierte Grafik: http://ibunker.us/pics/250-188/21431271430826.png]


    So hab ich versucht kommt überhaupt nichts raus:

    [autoit]

    MsgBox(64,"Zeit",_FFXPath("//span[@id='timer_remaining']", "textContent",2))

    [/autoit]


    Was mache ich falsch?

  • Hallo,

    bei Deinem ersten Beispiel wird das FF.au3 "interne Objekt" zurückgegeben, mit dem andere Funktionen weiterarbeiten können.

    Bei Deinem zweiten ... nun ja gerade nicht nachzuvollziehen, sollte eigentlich funktionieren.

    Schon mal das probiert:

    [autoit]

    MsgBox(64,"Zeit",_FFXPath("//span[@id='timer_remaining']", "textContent",9))

    [/autoit]


    ?

    Evtl. wäre ein bisschen HTML-Code nicht schlecht ...

  • Ich hab dein versucht kommt das raus -> [Blockierte Grafik: http://ibunker.us/pics/250-188/81551271492442.png]
    Und Auswahl Quellcode:

    Code
    <div class="wartezeit">
    <span style="font-size: 26px; color: red;"><b><span id="timer_remaining">03:29</span></b></span><br>
    <span style="font-size: 12px; color: red;"> <span id="timer_remaining_tournament"></span></span>
    <br>
    
    
    <script type="text/javascript">
    start_timer('remaining', 280, 'location.href = "/test/start";');
    </script>
    </div>


    Ich glaube es liegt dran das die Zeit in 03:29 ausgegeben wird oder?

  • Ich verstehe nicht ganz was du möchtest.

    vllt ja so???

    [autoit]


    #include <Timers.au3>

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

    $timer = _Timer_Init()
    Sleep(1000)
    MsgBox(0,"Zeit Unterschied",_Timer_Diff($timer))
    Exit

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

    Ich versteh es nicht xD?

    oder möchtest du das in der MsgBox die bis jetzt vergangene zeit steht????

    MfG
    Alizame

    Einmal editiert, zuletzt von Alizame (17. April 2010 um 10:57)

  • Ne also es liegt nicht in einem Frame. Also da habe ich eine Seite mit Counter/Zeit die wird immer weniger und ich möchte das er die Zeit ausgibt. Aber das macht er ja nicht. Ich bekomme auch keine Fehler Meldung.
    [Blockierte Grafik: http://ibunker.us/pics/250-188/58791271494404.png]
    Stilgar wenn ich dein Code nehmen also:

    [autoit]

    MsgBox(64,"Zeit",_FFXPath("//span[@id='timer_remaining']" , "textContent",9))

    [/autoit]


    [Blockierte Grafik: http://ibunker.us/pics/250-188/81551271492442.png]
    Aber wenn ich deinen Code erweitere bekomme ich wenigstens eine 0 raus :D.

    [autoit]

    MsgBox(64,"Zeit",_FFXPath("//span[@id='timer_remaining']" *1000, "textContent",9))

    [/autoit]


    Ich will eigentlich nur das er die blöde Zeit ausgibt. Also hab noch das gefunden vielleicht wisst ihr wozu das gut ist. Vielleicht hat es was damit zu tun.

    Spoiler anzeigen
  • *Edit hat alles geklappt. Hatte vergessen _FFConnect() vorher zu machen da XPath ja ohne sonst Probleme macht^^.

    [autoit]

    _FFConnect()
    _FFLinkClick("/test/start", "href", True)
    MsgBox(64,"Zeit",_FFXPath("//span[@id='timer_remaining']", "textContent",9))

    [/autoit]


    Ok so funktioniert es aber ich bekomme immer XX:XX raus. Also es wird ja als Text ausgegeben kann ichden das in Zahlen umwandeln lassen damit ich damit weiter arbeiten kann? Wenn ich z.B die Zeit mit etwas mal nehmen möchte.

    2 Mal editiert, zuletzt von Howik (17. April 2010 um 13:23)

  • Hilft das?

    [autoit]

    MsgBox(0,"",_StringToSec("01:22:22") & " Sekunden")

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

    Func _StringToSec($sTime)
    Local $iRet, $aTime = StringRegExp($sTime, "(?x)(\d+):(\d+):(\d+)",3)
    For $i = 2 To 0 Step -1
    $iRet += ($aTime[$i] * ($i = 2) * 1) + ($aTime[$i] * ($i = 1) * 60) + ($aTime[$i] * ($i = 0) * 3600)
    Next
    Return $iRet
    EndFunc ;==>_StringToSec

    [/autoit]
  • Super danke.

    [autoit]

    _FFConnect()
    _FFLinkClick("/test/start", "href", True)
    $Counter = MsgBox(64,"Zeit",_FFXPath("//span[@id='timer_remaining']", "textContent",9))

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

    MsgBox(0,"",_StringToSec($Counter) & " Sekunden")

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

    Func _StringToSec($sTime)
    Local $iRet, $aTime = StringRegExp($sTime, "(?x)(\d+):(\d+):(\d+)",3)
    For $i = 2 To 0 Step -1
    $iRet += ($aTime[$i] * ($i = 2) * 1) + ($aTime[$i] * ($i = 1) * 60) + ($aTime[$i] * ($i = 0) * 3600)
    Next
    Return $iRet
    EndFunc ;==>_StringToSec

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


    $Counter bekommt ja leider irgendwie nicht die Zeit von XPath welche Funktion liest den Wert von XPath aus?
    Also damit die Zeit von XPath in Sekunden umgewandelt wird.

  • so vllt?

    Spoiler anzeigen
    [autoit]

    #include <FF.au3>
    _FFConnect()
    _FFLinkClick("/test/start", "href", True)
    $Counter = _FFXPath("//span[@id='timer_remaining']", "textContent",9) ; <--- hier war noch ne MsgBox
    MsgBox(0,"",_StringToSec($Counter) & " Sekunden")

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

    Func _StringToSec($sTime)
    Local $iRet, $aTime = StringRegExp($sTime, "(?x)(\d+):(\d+):(\d+)",3)
    For $i = 2 To 0 Step -1
    $iRet += ($aTime[$i] * ($i = 2) * 1) + ($aTime[$i] * ($i = 1) * 60) + ($aTime[$i] * ($i = 0) * 3600)
    Next
    Return $iRet
    EndFunc ;==>_StringToSec

    [/autoit]
  • Du bist einfach Super!!!!!
    ok jetzt ist das Problem das er dass sagt:
    C:\Dokumente und Einstellungen\Administrator\Desktop\test.au3 (25) : ==> Subscript used with non-Array variable.:
    $iRet += ($aTime[$i] * ($i = 2) * 1) + ($aTime[$i] * ($i = 1) * 60) + ($aTime[$i] * ($i = 0) * 3600)
    $iRet += ($aTime^ ERROR

    Aber ich glaube ich habe die Lösung^^. Danke. Danke.

  • Ach, also ist es nicht

    Code
    HH:MM:SS


    sondern nur

    Code
    MM:SS


    ?

    Dann solltest du es mal hiermit probieren.

    [autoit]

    Func _StringToSec($sTime)
    Local $aTime = StringRegExp($sTime, "(?x)(\d+):(\d+)", 3)
    If Not @error Then Return ($aTime[1] + $aTime[0] * 60)
    EndFunc ;==>_StringToSec

    [/autoit]
  • Jo nochmals super danke.

    [autoit]

    Dim $Counter[1]

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

    _FFConnect()
    _FFLinkClick("/fights/start", "href", True)
    $Counter[1] =_FFXPath("//span[@id='timer_remaining']", "textContent",9)

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

    MsgBox(64,"Test",_StringToSec($Counter[1]) & " Sekunden")

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

    Func _StringToSec($sTime)
    Local $aTime = StringRegExp($sTime, "(?x)(\d+):(\d+)", 3)
    If Not @error Then Return ($aTime[1] + $aTime[0] * 60)
    EndFunc ;==>_StringToSec

    [/autoit]


    hab das so aber irgendwie ist es falsch den ich bekomme immer.
    : ==> Array variable has incorrect number of subscripts or subscript dimension range exceeded.:

  • Dim $Counter[1]

    Das erste und einzige Element ist also $Counter[0] (!!!)

    Spoiler anzeigen
    [autoit]

    Dim $Counter[1]

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

    _FFConnect()
    _FFLinkClick("/fights/start", "href", True)
    $Counter[0] =_FFXPath("//span[@id='timer_remaining']", "textContent",9)

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

    MsgBox(64,"Test",_StringToSec($Counter[0]) & " Sekunden")

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

    Func _StringToSec($sTime)
    Local $aTime = StringRegExp($sTime, "(?x)(\d+):(\d+)", 3)
    If Not @error Then Return ($aTime[1] + $aTime[0] * 60)
    EndFunc ;==>_StringToSec

    [/autoit]