_FFTabAdd; anschließende Aktionen im falschen Tab

  • Ausgangssituation: FF ist offen und ein Tab mit irgendeiner Seite ist geöffnet (für diese Bsp: keine wiki-Seite).
    Testcode:

    [autoit]

    _FFConnect()
    _FFTabAdd("http://de.wikipedia.org/")
    _FFClick(_FFXpath("//a[contains(@href,'Portal:Geographie')]", "", 9)

    [/autoit]

    1. Ausführung: nichts wird angeklickt

    output

    +>17:19:33 Starting AutoIt3Wrapper v.2.0.1.22 Environment(Language:0407 Keyboard:00000407 OS:WIN_7/ CPU:X64 OS:X64)
    >Running AU3Check (1.54.19.0) from:C:\Program Files (x86)\AutoIt3
    +>17:19:33 AU3Check ended.rc:0
    >Running:(3.3.4.0):C:\Program Files (x86)\AutoIt3\autoit3.exe "C:\Users\Hell\Desktop\DSBot\FF Test file.au3"
    _FFConnect: OS: WIN_7 WIN32_NT 7600
    _FFConnect: AutoIt: 3.3.4.0
    _FFConnect: FF.au3: 0.6.0.1b-3
    _FFConnect: IP: 127.0.0.1
    _FFConnect: Port: 4242
    _FFConnect: Delay: 2ms
    _FFConnect: Socket: 608
    _FFConnect: Browser: Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.1.8) Gecko/20100202 Firefox/3.5.8
    __FFSendJavaScripts: Sending functions to FireFox .
    __FFWaitForRepl ==> MozRepl Exception: !!! [Exception... "Component is not available" nsresult: "0x80040111 (NS_ERROR_NOT_AVAILABLE)"
    ......... done
    __FFSend: try{gBrowser.selectedTab = gBrowser.addTab('http://de.wikipedia.org/')}catch(e){'_FFCmd_Err';};
    __FFRecv: [object XULElement] — {linkedBrowser: {…}, _tPos: 5, mOverCloseButton: false, mCorrespondingMenuitem: null, arrowKeysShouldWrap: false, accessibleType: 4119, control: {…}, ...}
    _FFLoadWait: ... loaded in 527ms
    _FFLoadWait: . loaded in 10ms
    __FFSend: try{gBrowser.tabContainer.selectedIndex}catch(e){'_FFCmd_Err';};
    __FFRecv: 5
    tab: 5
    __FFSend: FFau3.xpath=null;try{FFau3.xpath=FFau3.WCD.evaluate("//a[contains(@href,'Portal:Geographie')]",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
    +>17:19:36 AutoIT3.exe ended.rc:0
    >Exit code: 0 Time: 4.032

    2. Ausführung: im zuletzt aktiven Tab wird der Link angeklickt, aber nicht im neu geöffneten

    output

    +>17:22:37 Starting AutoIt3Wrapper v.2.0.1.22 Environment(Language:0407 Keyboard:00000407 OS:WIN_7/ CPU:X64 OS:X64)
    >Running AU3Check (1.54.19.0) from:C:\Program Files (x86)\AutoIt3
    +>17:22:37 AU3Check ended.rc:0
    >Running:(3.3.4.0):C:\Program Files (x86)\AutoIt3\autoit3.exe "C:\Users\Hell\Desktop\DSBot\FF Test file.au3"
    _FFConnect: OS: WIN_7 WIN32_NT 7600
    _FFConnect: AutoIt: 3.3.4.0
    _FFConnect: FF.au3: 0.6.0.1b-3
    _FFConnect: IP: 127.0.0.1
    _FFConnect: Port: 4242
    _FFConnect: Delay: 2ms
    _FFConnect: Socket: 600
    _FFConnect: Browser: Mozilla/5.0 (Windows; U; Windows NT 6.1; de; rv:1.9.1.8) Gecko/20100202 Firefox/3.5.8
    __FFSendJavaScripts: Sending functions to FireFox .......... done
    __FFSend: try{gBrowser.selectedTab = gBrowser.addTab('http://de.wikipedia.org/')}catch(e){'_FFCmd_Err';};
    __FFRecv: [object XULElement] — {linkedBrowser: {…}, _tPos: 5, mOverCloseButton: false, mCorrespondingMenuitem: null, arrowKeysShouldWrap: false, accessibleType: 4119, control: {…}, ...}
    _FFLoadWait: ..... loaded in 1130ms
    _FFLoadWait: . loaded in 10ms
    __FFSend: try{gBrowser.tabContainer.selectedIndex}catch(e){'_FFCmd_Err';};
    __FFRecv: 5
    tab: 5
    __FFSend: FFau3.xpath=null;try{FFau3.xpath=FFau3.WCD.evaluate("//a[contains(@href,'Portal:Geographie')]",FFau3.WCD,null,XPathResult.FIRST_ORDERED_NODE_TYPE,null).singleNodeValue;}catch(e){'_FFXPath_Error: '+e;};
    __FFRecv: http://de.wikipedia.org/wiki/Portal:Geographie
    __FFSend: try{FFau3.simulateEvent(FFau3.xpath,'MouseEvents','click');}catch(e){'_FFCmd_Err';};
    __FFRecv: 1
    _FFLoadWait: . loaded in 10ms
    +>17:22:39 AutoIT3.exe ended.rc:0
    >Exit code: 0 Time: 3.532

    Daran ändern auch folgende Variationen nichts:

    • delays nach allen Aktionen (ffclick und ffxpath auch getrennt)
    • tabs vor xpath aber nach _FFTabAdd mit _FFTabSetSelected wechseln (Aktion wir immer im Tab ausgeführt der vor _FFTabAdd ausgewählt war)
    • _FFLinkClick verwenden

    installierte FF-AddOns: AdBlockPlus, NoScript (beide testweise deaktiviert), xPather, FireBug, FireXPath, GM, MozRepl

    2 Mal editiert, zuletzt von magnifier512 (23. Februar 2010 um 19:48)

  • Genau genommen ist es mit der b4 noch schlimmer. Jetzt liefert _FFxPath gar nix mehr zurück, wenn _FFTabAdd verwendet wurde. Der im output ausgegebene Tab-Index stimmt aber und der Tab zeigt auch die gewünschte Seite an.

    [autoit]

    _FFClick(_FFXpath("//a", "", 9))

    [/autoit]

    liefert

    Spoiler anzeigen

    __FFSend: FFau3.xpath=null;try{FFau3.xpath=FFau3.WCD.evaluate("//a",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: 1


    Zusatz-Info: Bei b3 und b4 läuft alles normal wenn _FFStart verwendet wird, also nur auch nur ein Tab vorhanden ist.

  • [autoit]

    _FFConnect()
    _FFTabAdd()
    _FFOpenURL("http://de.wikipedia.org/")
    _FFClick(_FFXpath("//a", "", 9))

    [/autoit]


    keine Änderung

  • Ja, das war ein Suboptimales Beispiel. Der erste a-Tag auf Wikipedia ist kein Link, sondern nur ein leerer Link:

    PHP
    <a id="top"></a>


    der scheint so etwas komisches hervorzurufen.

    [autoit]

    _FFClick(_FFXpath("//a[2]")

    [/autoit]


    hingegen funktioniert, auch wenn es nur ein Anker ist und die Seite ein paar Millimeter nach unten scrollt. Bei mir zumindest ...