_FFXPath fehleranfällig?

  • Naja, XPath wird ja von RegExp gefeeded :p...! Also ist ja klar, dass XPather nix findet...^^

    Habe dir noch was per PN geschickt :D...

    (Ich hab mich so an deine tolle UDF "gewöhnt"... xD )


    LG

  • Ich zweifel sicher nicht, dass ich Fehler mache ;)! ABSOLUT nicht...

    Problem -> Bei SEuBo klappen BEIDE Scripts...
    Bei mir nicht... :D Sonst ne Idee, warum das an mir liegen könnte?! Ich habe seins und er meins probiert... Bei ihm gehen beide unverändert, bei mir nicht :/...


    LG

  • Habt ihr die gleiche Mozrepl-Version? DIe aktuelle ist 1.0.2

    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.

  • ok ich hab hier jetz mal auch nen schönen Fehler mit _FFXPath


    ersma die Verbindung... klappt soweit

    Code
    __FFSend: FFau3.xpath=null;try{FFau3.xpath=FFau3.WCD.evaluate("/html/body/div[1]",FFau3.WCD,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue;}catch(e){'_FFXPath_Error: '+e;};
    __FFRecv: [object HTMLDivElement] — {scrollWidth: 260, clientLeft: 0, clientHeight: 15, clientWidth: 260, clientTop: 0, getClientRects: function() {…}, getBoundingClientRect: function() {…}, ...}


    ja... versteh den __FFRecv iwie nit 8| allein schon was der __FFSend da sendet is anders als bei der älteren FF.au3
    Das hier is die neueste nicht-Testversion
    und das ganze bei der Abfrage hier:

    [autoit]

    If _FFIsConnected() Then
    _FFFrameEnter(7)
    $sString = _FFXPath("/html/body/div[1]")
    _FFFrameLeave()
    EndIf

    [/autoit]

    mit der FF.au3 Version 0.6.0.0b-5 bekomme ich bei gleichen Befehl das hier

    Code
    __FFSend: FFau3.xpath=null;try{FFau3.xpath=window.content.top.frames[7].document.evaluate("/html/body/div[1]",window.content.top.frames[7].document,null,XPathResult.STRING_TYPE,null).stringValue;}catch(e){'_FFXPath_Error: '+e;};
    __FFRecv: 
     Lorem ipsum dolor sit amet....


    allein schon der __FFSend sieht ganz anders aus

    weitere Daten:
    FireFox Version 3.5.7
    MozRepl Version 1.0.0.2009122217

  • @Karill Endusa:

    Das ist kein Fehler:

    V0.6.0.1b-3
    - Changed: Default values for _FFXpath: _FFXPath($sQuery, $sAttribute = "", $iReturnType = 9, $iFilter = 0)
    d.h.: per Default wird nun nicht mehr der "textContent" sondern das Objekt zurückgegeben.

  • kein wunder das mein Script auf einem neuen System mit neuer FF.au3 etc nicht mehr läuft.

    Ich habe hier noch einen kleinen Code der nicht funktioniert:

    Code
    #include <FF.au3>
    If _FFConnect(Default, 4000, 3000) Then
    Sleep(2000)
    _FFclick(_FFXpath("/html/body/span[@id='main']/center/span[@id='body']/center/form/table[1]/tbody/tr[1]/td[2]/input[7]","",9))
    EndIf

    Soll einfach auf https://autoit.de/www.google.de auf den suchen button klicken.


    Ausgabe


    Früher ging das alles, jetzt nicht mehr und ich weiß nicht warum.


    Habt ihr eine Idee?

  • Was ist "früher"? Bevor google seine Webseite umgebaut hat?
    Der XPath in deinem Beispiel liefert bei mir weder mit FireBug noch mit XPather ein Ergebnis.

    Das funktioniert:

    [autoit]

    #include <FF.au3>

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

    If _FFConnect() Then
    _FFSetValue("test", "q", "name")
    _FFClick(_FFXPath("//input[@type='submit' and @name='btnG' ]") )
    EndIf

    [/autoit]

    wobei ein einfaches _FFFormSubmit() gereicht hätte ...

  • äh ja.... ka was ich da gemacht habe, jetzt gehts wieder....

    Kann es zu Problemen kommen wenn ich die Firefox Portable Version nehme? Die ist nämlich 3.6.

  • ich muss das Thema nochmal vorholen

    ich habe FirefoxPortable 3.6
    MozRepl 1.0.0.2009122217
    FF.au3 V0.6.0.1b-3
    AutoIt: 3.3.4.0

    kleines Programm

    Lasse ich das letzte FFConnect weg, wird die letze Zeile nicht mehr ausgeführt.

    Programm geht zuerst auf computerbase.de dann klickt er aufs Forum und dann auf Hilfe


    Ich habe als derzeitige Lösung vor jedes FFClick ein FFConnect gemacht. Das Problem dabei ist, dass er irgendwann total langsam wird und dann immer der timeout kommt.
    Von dem Problem hat hier auch einer in einem Thread geschrieben.
    https://autoit.de/index.php?page=Thread&amp;threadID=17633


    Hoffe ihr könnt mir helfen :)

    EDiT: update auf AutoIt: 3.3.6.0 gemacht und hat nix gebracht.

    Greetz

    Einmal editiert, zuletzt von leedian (12. März 2010 um 00:59)

  • Dann lad doch einfach mal die richtige Betaversion von FF.au3 runter in der das Problem gefixt ist. Die aktuelle Version ist 0.6.0.1b-4 nicht 0.6.0.1b-3.

    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.

  • achso, ich dachte mittlerweile wäre das auch in der normalen Version gefixt. Gut Danke werd ich gleich testen :)

  • @leedian
    Mit dem Problem kämpfe ich als auch. Das einzigste was ich hilfreiches gefunden hab war "einfach" immer dis- und neuconnect.

    [autoit]

    _FFDisConnect()
    _FFConnect()
    _FFclick(_FFXpath...

    [/autoit]


    Nich schön, nich selten *hust* aber funzt :?:
    chip
    Ich hab es mal mit der Beta getestet und keine Veränderung festgestellt. Der Fehler äussert sich so:

    [autoit]

    _FFConnect()
    If _FFIsConnected() Then
    _FFFormSubmit()_FFLinkClick ( "Seite aktualisieren" , "text" )Else ; Sonst... (Fehlermeldung!)
    MsgBox(64, "Ein Fehler ist aufgetreten", "Eine Verbindung mit dem Mozilla FireFox war nicht möglich!")
    EndIf

    [/autoit]


    kommt die Meldung:

    Code
    __FFSend: FFau3.xpath=null;try{FFau3.xpath=FFau3.WCD.evaluate("//a[contains(.,'Seite aktualisieren')]",FFau3.WCD,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue;}catch(e){'_FFXPath_Error: '+e;};
    __FFRecv: 
    __FFSend: try{FFau3.simulateEvent(FFau3.xpath,'MouseEvents','click');}catch(e){'_FFCmd_Err';};
    __FFRecv: -3
    _FFClick ==> No match: $sElement: FFau3.xpath


    Mach ich vor dem _FFLinkClick ein _FFConnect bzw erst _FFDisconnect _FFConnect klappt es:

    Code
    __FFSend: FFau3.xpath=null;try{FFau3.xpath=FFau3.WCD.evaluate("//a[contains(.,'Seite aktualisieren')]",FFau3.WCD,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue;}catch(e){'_FFXPath_Error: '+e;};
    __FFRecv: (der vorhandene Link, leider nicht öffentlich zugänglich) 
    __FFSend: try{FFau3.simulateEvent(FFau3.xpath,'MouseEvents','click');}catch(e){'_FFCmd_Err';};
    __FFRecv: 1
    _FFLoadWait: ........... loaded in 2840ms


    Ich schau mal ob ich das aktuellste Autoit-Version hab, aber eine Casualität seh ich da nicht :S
    Grüße
    Edith meint:

    Code
    _FFConnect: AutoIt: 3.3.6.0
    _FFConnect: FF.au3: 0.6.0.1b-4


    und keine Änderung *schulternzuck*

    Einmal editiert, zuletzt von Seldzar (12. März 2010 um 12:09)

  • @Seldzar: jepp, habe jetzt auch die neue ff.au3 ( testversion) und sieht genauso aus wie bei dir.
    Ich frage mich echt woran es liegt, und wieso es bei den anderen anscheinend geht?

  • @Seldzar: jepp, habe jetzt auch die neue ff.au3 ( testversion) und sieht genauso aus wie bei dir.
    Ich frage mich echt woran es liegt, und wieso es bei den anderen anscheinend geht?


    Reproduzierbarkeit ....
    Wenn ich ne einfache Tabelle mach und das Script local teste klappt es ja:

    Spoiler anzeigen
    Code
    Blubb
    
    
    
    
    [url='Test.html']Neu laden[/url]
    [autoit]

    _FFConnect()
    If _FFIsConnected() Then

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

    local $vTest
    _FFLinkClick ("" , "text" )
    for $i = 1 to 3
    $vTemp = "Nix"
    $vTemp = _FFXPath ( "/html/body/table/tbody/tr[1]/td" , Default , 2)
    $vTest &= $vTemp & " + "
    _FFLinkClick ("laden" , "text" )
    Next
    MsgBox ( 0 , "Test" , $vTest )

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

    Else ; Sonst... (Fehlermeldung!)
    MsgBox(64, "Ein Fehler ist aufgetreten", "Eine Verbindung mit dem Mozilla FireFox war nicht möglich!")
    EndIf

    [/autoit]


    Und wenn ich dann halt auf der nicht öffentlich zugänglichen Seite bin happert es wieder.
    Grüße