Hallo zusammen,
Stilgart hatte hier einmal eine Funktion gepostet, bei der das fertig Laden der Seite mittels _FFLoadWaitASYNC() überprüft wurde.
Das ganze hatte auf meinem Window 7 Rechner auch super geklappt in verbindung mit Firefox 15.0.1 portable
jetz benutze ich Windows 8 und Firefox 15.0.1 portable
Jetz hab ich aber das problem, das er dennoch scheinbar nicht wartet bis alles geladen hat sondern dennoch weitermacht.
Ich benutze es in folgender verbindung:
_FFClick(_FFXpath("//*[@id='pirateCaptureBox']/div[1]/table/tbody/tr[" & $Capturemode & "]/td[5]/a", "", 9))
_FFLoadWaitASYNC()
Wie man sieht arbeite ich mit der FFau3. da nach dem klick auf den Button die Seite an sich nicht neu geladen wird geht _ffloadwait() nicht, es wird mit Ajax etwas aktualisiert, dann überprüfe ich ob das element nach dem klick vorhanden ist, arbeite ich mit sleep, dauert das bei vielen Aktionen einfach zu lange.
hier ist der Code zur Funktion von Stilgart:
Spoiler anzeigen
; #FUNCTION# ===================================================================
; Name ..........: _FFLoadWaitASYNC
; Description ...: Wait while the page is loading (AJAX)
; Beschreibung ..: Wartet bis die Seite geladen ist. (AJAX)
; AutoIt Version : V3.3.0.0
; Syntax ........: _FFLoadWaitASYNC([$iDelay = 0[, $iTimeOut = 20000]])
; Parameter(s): .: $iDelay - Optional: (Default = 0) : Delay before and after waiting in ms
; $iTimeOut - Optional: (Default = 20000) : Timeout while waiting in ms
; Return Value ..: Success - 1
; Failure - 0
; @ERROR -
; @EXTENDED - loading time in ms
; Author(s) .....: Thorsten Willert
; Date ..........: Tue Aug 04 21:38:42 CEST 2009
; Link ..........:
; Related .......: _FFDialogWait, _FFLoadWait
; Example .......: No
; ==============================================================================
Func _FFLoadWaitASYNC($iDelay = 0, $iTimeOut = 20000)
Local $sFuncName = "_FFLoadWaitASYNC"
Local $iLoadingTime = 0, $i = 0
Local $bTrace = $_FF_COM_TRACE
$_FF_COM_TRACE = False
Local $TimeOutTimer = TimerInit()
Sleep($iDelay + $_FF_CON_DELAY)
While TimerDiff($TimeOutTimer) < $iTimeOut
If _FFCmd("gNavigatorBundle.getString('nv_done') == XULBrowserWindow.statusTextField.label ? 1 : 0") Then $i += 1
If $i > 4 Then
$iLoadingTime = Round(TimerDiff($TimeOutTimer))
Sleep($_FF_CON_DELAY + 25)
$_FF_COM_TRACE = $bTrace
;msgbox(0,"","Hat geklappt mit dem Laden")
Return SetError(0, $iLoadingTime - $_FF_CON_DELAY - 25 - $iDelay, 1)
EndIf
Sleep(250)
Wend
Return SetError(__FFError($sFuncName, $_FF_ERROR_Timeout, "Can not check site status."), $iLoadingTime,0)
EndFunc ;==> _FFLoadWaitASYNC
Alles anzeigen
Vllt kann mir ja einer auf die sprünge helfen, was ich ändern kann damit es zuverlässiger arbeitet?
grüße Tobi