hallo,
ich habe ein script, dass eine seite periodisch neu lädt. allerdings hängt nach einer weile das script. es gibt keine fehlermeldung oÄ. aber ffopenurl öffnet eine url nichtmehr, die es die male davor problemlos öffnet. als errorcode wird mir 8 ausgegeben. muss das skript dann immer beenden und neustarten. hat wer ein workaround oder so?
thx!
_ffopenurl geht manchmal nicht?
-
unknown -
29. März 2010 um 12:07
-
-
Hallo, versuch es mal mit dem Workaround:
Ich hab mittlerweile eine Lösung gefunden, die A funktioniert und B ich keine Ahnung hab, wieso ...
[autoit]
In der FF.au3 hab ich die Funktion _FFLoadWait() geändert:$_FF_COM_TRACE = $bTrace
[/autoit]
__FFSendJavaScripts(); <<<-- Diese Zeile wurde eingefügt -->>
Return SetError(0, $iLoadingTime - $_FF_CON_DELAY * 1.4, 1)
...
ConsoleWrite(@CRLF & @CRLF)
__FFSendJavaScripts(); <<<-- Diese Zeile wurde eingefügt -->>
Return SetError(__FFError($sFuncName, $_FF_ERROR_Timeout, "Can not check site status."), $iLoadingTime, 0)
Ob es vor dem 2. Return wirklich nötig ist, ist mir unklar ....
Grüße[MSIE_newline_end ] -
hey danke. habs mal in meienr ff.au3 ergänzt. gibts ne erklärung für das workaround oder kannst du mir wenigstens erzählen, aus welchem thread das zitat ist? aber erstmal sehen ob das problem damit gelöst ist;)
-
Seltsames "Workaround" - sieht danach ob es Probleme mit dem "Frame"-Objekt geben würde. Werde ich mir nach den Feiertagen mal genauer ansehen.
@unknown:
Wie sieht denn Dein Programm bzw. die Meldungen in der Editor-Console aus? -
hey danke. habs mal in meienr ff.au3 ergänzt. gibts ne erklärung für das workaround oder kannst du mir wenigstens erzählen, aus welchem thread das zitat ist? aber erstmal sehen ob das problem damit gelöst ist;)
Wenn du auf das "Zitat von Seldzar" klickst müsste sich der Therad öffnen
Der Thread ist aber auch auf der ersten Seiten, nennt sich "_FFXPath fehleranfällig?".
Und ich weiss, das mit dem __FFSendJavaScripts() die Befehle neu gesendet werden, wie es bei einem _FFConnect
oder _FFTabAdd passiert. Aber wieso es ohne nicht funktioniert .... keine Ahnung.
StilgarWenn ich diesen Code nehme:
Spoiler anzeigen
[autoit]#cs ----------------------------------------------------------------------------
[/autoit] [autoit][/autoit] [autoit]
Testscript für ffxpath
#ce ----------------------------------------------------------------------------
#include
#include;_FFStart()
[/autoit] [autoit][/autoit] [autoit]
_FFConnect()
If _FFIsConnected() Then$vS1 = "/html/body/div[@id='navi_top']/div[1]/ul[1]/li[1]/a"
[/autoit] [autoit][/autoit] [autoit]
$vS2 = "//div[@id='mitte_news']/div/h4[1]"
$vS3 = "//div[@id='mitte_news']/div/div[1]/a"
$vURL = "http://www.heise.de/"
_FFOpenURL($vURL)
$vD1 =_FFXpath($vS1 ,"text",2)
_FFLinkClick("7-Tage-News" , "text" )
$vD2 = _FFXpath($vS2 ,"text",2)
$vD3 = _FFXPath($vS3 , "text" , 2)
$vMSG = "Oberste News von " & $vD1 & " am " &$vD2 & " : " &$vD3
ConsoleWrite('@@ Debug(' & @ScriptLineNumber & ') : $vMSG = ' & $vMSG & @crlf & '>Error code: ' & @error & @crlf) ;### Debug Console
MsgBox ( 0 , "Ergebniss" , $vMSG )
;_FFWindowClose()Else ; Sonst... (Fehlermeldung!)
[/autoit]
MsgBox(64, "Ein Fehler ist aufgetreten", "Eine Verbindung mit dem Mozilla FireFox war nicht möglich!")
EndIf
kommt das in der Editor-Console:Spoiler anzeigen
Code
Alles anzeigen_FFConnect: Browser: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2 (.NET CLR 3.5.30729) __FFSendJavaScripts: Sending functions to FireFox .......... done __FFSend: try{FFau3 != null?1:0}catch(e){'_FFCmd_Err';}; __FFRecv: 1 _FFOpenURL: http://www.heise.de/ __FFSend: try{window.content.top.document.location.href='http://www.heise.de/'}catch(e){'_FFCmd_Err';}; __FFRecv: http://www.heise.de/ _FFLoadWait: ................. loaded in 4495ms __FFSend: try{FFau3.WCD=window.content.top.document;}catch(e){'_FFCmd_Err';}; __FFRecv: [object XPCNativeWrapper [object HTMLDocument]] — {contentType: "text/html", domain: "www.heise.de", doctype: {…}, addEventListener: function() {…}, nodeType: 9, defaultView: {…}, title: "heise online - IT-News, c't, iX, Technology Review, Telepolis", ...} __FFSend: FFau3.xpath=null;try{FFau3.xpath=FFau3.WCD.evaluate("/html/body/div[@id='navi_top']/div[1]/ul[1]/li[1]/a",FFau3.WCD,null,XPathResult.STRING_TYPE,null).stringValue;}catch(e){'_FFXPath_Error: '+e;}; __FFRecv: heise online __FFSend: FFau3.xpath=null;try{FFau3.xpath=FFau3.WCD.evaluate("//a[contains(.,'7-Tage-News')]",FFau3.WCD,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue;}catch(e){'_FFXPath_Error: '+e;}; __FFRecv: http://www.heise.de/newsticker/ __FFSend: try{FFau3.simulateEvent(FFau3.xpath,'MouseEvents','click');}catch(e){'_FFCmd_Err';}; __FFRecv: 1 _FFLoadWait: ............. loaded in 3380ms __FFSend: FFau3.xpath=null;try{FFau3.xpath=FFau3.WCD.evaluate("//div[@id='mitte_news']/div/h4[1]",FFau3.WCD,null,XPathResult.STRING_TYPE,null).stringValue;}catch(e){'_FFXPath_Error: '+e;}; __FFRecv: __FFSend: FFau3.xpath=null;try{FFau3.xpath=FFau3.WCD.evaluate("//div[@id='mitte_news']/div/div[1]/a",FFau3.WCD,null,XPathResult.STRING_TYPE,null).stringValue;}catch(e){'_FFXPath_Error: '+e;}; __FFRecv: @@ Debug(21) : $vMSG = Oberste News von heise online am : >Error code: 0
Setze ich nu den Workaround wie oben beschrieben ein, sieht die Consolenmeldung so aus:Spoiler anzeigen
Code
Alles anzeigen_FFConnect: OS: WIN_XP WIN32_NT 2600 Service Pack 3 _FFConnect: AutoIt: 3.3.6.0 _FFConnect: FF.au3: 0.6.0.1b-4 _FFConnect: IP: 127.0.0.1 _FFConnect: Port: 4242 _FFConnect: Delay: 2ms _FFConnect: Socket: 1584 _FFConnect: Browser: Mozilla/5.0 (Windows; U; Windows NT 5.1; de; rv:1.9.2.2) Gecko/20100316 Firefox/3.6.2 (.NET CLR 3.5.30729) __FFSendJavaScripts: Sending functions to FireFox .......... done __FFSend: try{FFau3 != null?1:0}catch(e){'_FFCmd_Err';}; __FFRecv: 1 _FFOpenURL: http://www.heise.de/ __FFSend: try{window.content.top.document.location.href='http://www.heise.de/'}catch(e){'_FFCmd_Err';}; __FFRecv: http://www.heise.de/ _FFLoadWait: ................. loaded in 4434ms __FFSendJavaScripts: Sending functions to FireFox .......... done __FFSend: try{FFau3.WCD=window.content.top.document;}catch(e){'_FFCmd_Err';}; __FFRecv: [object XPCNativeWrapper [object HTMLDocument]] — {contentType: "text/html", domain: "www.heise.de", doctype: {…}, addEventListener: function() {…}, nodeType: 9, defaultView: {…}, title: "heise online - IT-News, c't, iX, Technology Review, Telepolis", ...} __FFSend: FFau3.xpath=null;try{FFau3.xpath=FFau3.WCD.evaluate("/html/body/div[@id='navi_top']/div[1]/ul[1]/li[1]/a",FFau3.WCD,null,XPathResult.STRING_TYPE,null).stringValue;}catch(e){'_FFXPath_Error: '+e;}; __FFRecv: heise online __FFSend: FFau3.xpath=null;try{FFau3.xpath=FFau3.WCD.evaluate("//a[contains(.,'7-Tage-News')]",FFau3.WCD,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue;}catch(e){'_FFXPath_Error: '+e;}; __FFRecv: http://www.heise.de/newsticker/ __FFSend: try{FFau3.simulateEvent(FFau3.xpath,'MouseEvents','click');}catch(e){'_FFCmd_Err';}; __FFRecv: 1 _FFLoadWait: ............. loaded in 3336ms __FFSendJavaScripts: Sending functions to FireFox .......... done __FFSend: FFau3.xpath=null;try{FFau3.xpath=FFau3.WCD.evaluate("//div[@id='mitte_news']/div/h4[1]",FFau3.WCD,null,XPathResult.STRING_TYPE,null).stringValue;}catch(e){'_FFXPath_Error: '+e;}; __FFRecv: 30.03.2010 __FFSend: FFau3.xpath=null;try{FFau3.xpath=FFau3.WCD.evaluate("//div[@id='mitte_news']/div/div[1]/a",FFau3.WCD,null,XPathResult.STRING_TYPE,null).stringValue;}catch(e){'_FFXPath_Error: '+e;}; __FFRecv: Zehn auf einen Streich -- Microsoft patcht Internet Explorer @@ Debug(21) : $vMSG = Oberste News von heise online am 30.03.2010 : Zehn auf einen Streich -- Microsoft patcht Internet Explorer >Error code: 0
Wie schon gesagt, keine Ahnung, wieso das nötig ist, aber es geht. Und es ist besser als _FFConnect immer
Grüß e -
@Seldzar:
ok, hatte das nicht als link erkannt;) also es scheint besser zu laufen. weißt du ob es mit dem workarround immer funktioniert oder nur häufiger? kann jmd bestätigen, dass es sobald es einmal nichtmehr funktioniert, garnichtmehr geht? kommt mir iwie so vor. kann es aber schlecht überprüfen, da das skript auf nem rechner läuft und ich darauf nur mit vnc zugriff habe.
es handelt sich dort um ein script, dass in ner schleife läuft und sich periodisch wiederholt. möchte den code ungern hier posten. und was soll ich denn genau von der console posten? wäre zufall, wenn ich mich mal im richtigen moment per vnc einlogge und gerade der fehler passiert sein sollte;) aber vllt hilft dir, stilgar, ja seldzars beispiel schon aus;)
an dem rechner wo ich das skript geschrieben und getestet habe ist mir der fehler auch nicht aufgefallen, aber lief auch nur testweise und nicht so häufig. vllt hab ich ihn deswegen ja nicht gesehen;)
Stilgar: freu mich, wenn du iwas neues bzw den fehler findest;) ihr macht alle eine klasse arbeit hier:) -
hallo, gibts inzwischen irgendwelche neuigkeiten? das workaround von seldzar scheint nicht immer zu funktionieren. kann das jmd bestätigen oder widerlegen?