Funktionssammlung

  • Hier folgt eine Sammlung an nützlichen Routinen, die momentan nicht als
    eigene Funktion in der FF.au3 enthalten sind, oder nicht eingebaut werden.

    -------------------------------------------------------------------------------

    Funktionen mit extra Themen:
    _FFAutoLogin (Web-Seiten-Auto-Login Funktion und Generator für Login-Funktionen)
    _FF_RecordForm (Scripterstellung durch Erfassung ausgefüllter Formulare)

    -------------------------------------------------------------------------------

    Alle Funktionen die (momentan) nicht in der FF.au3 vorhanden sind, lassen sich
    auch selbst bauen, mit Hilfe von:

    _FFCmd
    und folgenden Dokumentationen:

    http://de.selfhtml.org/javascript/objekte/index.htm
    http://developer.mozilla.org/en/docs/Gecko_DOM_Reference

    [autoit]

    ;Ladestatus einer Seite:
    _FFCmd("document.getElementById('statusbar-icon').value")
    ;-------------------------------------------------------------------------------

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

    ;Von thunder-man:

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

    ;Schließt den Browser in 5 Sekunden.
    _FFCmd('setTimeout("self.close();", 5000)')
    ;-------------------------------------------------------------------------------

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

    ;Text in der Statusbar schreiben.
    $Text = '"Mein Text"'
    _FFCmd("content.window.defaultStatus =" & $Text)

    [/autoit]


    wer noch mehr hat, immer her damit ;)

    8 Mal editiert, zuletzt von Stilgar (24. September 2009 um 10:17)

  • Zugriff auf das Meta-Tag:
    <base target="...">
    oder auch:
    <base href="...">

    [autoit]

    ;Lesen:
    $sBaseTarget = _FFCmd('.getElementsByTagName("base")[0].target')

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

    ;Schreiben:
    _FFCmd('.getElementsByTagName("base")[0].target="ziel"')

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

    ;Lesen:
    $sBaseHREF = _FFCmd('.getElementsByTagName("base")[0].href')

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

    ;Schreiben:
    _FFCmd('.getElementsByTagName("base")[0].href="url"')

    [/autoit]


    Ähnlich bei einzelnen Links, z.B.:

    [autoit]

    _FFCmd('.links[0].target="ziel"')

    [/autoit]

    -----------------------------------------------------------

    Zugriff auf die URL eines Bild-Linkes, z.B.: Bild 0:

    [autoit]

    $sURL = _FFCmd(".images[0].parentNode.href")

    [/autoit]

    4 Mal editiert, zuletzt von Stilgar (20. Juli 2009 um 11:03)

  • Beispiel zum Einloggen auf einer Seite:
    ( einfachster Fall mit nur einem Formular auf der Seite und Input-Feldern mit Namen)

    [autoit]

    #include<FF.au3>

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

    If _FFStart("http://www.DaWoIchMichEinloggenMoechte.de",Default,2) Then
    _FFSetValueByName("NameInputName","MeinName")
    _FFSetValueByName("PasswortInputName","MeinsPasswort")
    _FFFormSubmit()
    EndIf

    [/autoit]

    Einmal editiert, zuletzt von Stilgar (25. März 2009 um 10:46)

  • URL der aktuellen Seite:

    [autoit]

    _FFCmd(".location.href")

    [/autoit]

    Titel der aktuellen Seite:

    [autoit]

    _FFCmd(".title")

    [/autoit]

    Browser Version (ohne führenden Punkt!!!):

    [autoit]

    _FFCmd("navigator.userAgent")

    [/autoit]

    2 Mal editiert, zuletzt von Stilgar (20. Juli 2009 um 11:03)

  • JavaScript ein /ausschalten.

    [EDIT]
    Ein:

    [autoit]

    _FFPrefSet("javascript.enabled",True)

    [/autoit]

    Aus:

    [autoit]

    _FFPrefSet("javascript.enabled",False)

    [/autoit]

    2 Mal editiert, zuletzt von Stilgar (25. März 2009 um 10:47)

  • Cookies an/aus:

    [autoit]

    _FFCmd("navigator.cookieEnabled")

    [/autoit]

    [Kommentar by Stilgar]
    Das ist nur die Abfrage ob Cookies erlaubt sind.

    3 Mal editiert, zuletzt von Stilgar (20. Juli 2009 um 11:04)

  • URL encodieren:

    [autoit]

    $sEncodedURL = _FFCmd("encodeURIComponent('http://www.gibtswahrscheinlich.net/')" )

    [/autoit]

    URL decodieren:

    [autoit]

    $sDecodedURL = _FFCmd("unescape('" & $sEncodedURL & "')")

    [/autoit]

    2 Mal editiert, zuletzt von Stilgar (20. Juli 2009 um 11:04)

  • Alle Cookies löschen:

    [autoit]

    _FFCmd('Components.classes["@mozilla.org/cookiemanager;1"].getService(Components.interfaces.nsICookieManager).removeAll();')

    [/autoit]

    HTTP-Proxy ändern:

    [autoit]

    _FFPrefSet("network.proxy.http","localhost")

    [/autoit]

    HTTP-Proxy Port ändern:

    [autoit]

    _FFPrefSet("network.proxy.http_port",8080)

    [/autoit]

    4 Mal editiert, zuletzt von Stilgar (27. Juni 2010 um 14:33)

  • Zoom z.B Faktor 1,5:

    [autoit]

    _FFCmd('gBrowser.selectedBrowser.markupDocumentViewer.fullZoom=1.5;')

    [/autoit]

    [EDIT]
    Mittlerweile ersetzt durch:

    [autoit]

    _FFAction("zoom",1.5)

    [/autoit]

    2 Mal editiert, zuletzt von Stilgar (20. Juli 2009 um 11:05)

  • Position eines beliebigen Elements ermitteln:

    Spoiler anzeigen
    [autoit]

    #Region Includes
    #include <Array.au3>
    #include <FF.au3>
    #EndRegion Includes

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

    _FFConnect()

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

    Global $aPos = _FF_GetElementPosition("images[0]")
    If Not @error Then _ArrayDisplay($aPos)

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

    Exit

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

    ; #FUNCTION# ===================================================================
    ; Name ..........: _FF_GetElementPosition
    ; Description ...: Returns an array with the left and top position of an element.
    ; AutoIt Version : V3.3.0.0
    ; Syntax ........: _FF_GetElementPosition($sElement)
    ; Parameter(s): .: $sElement - Any DOM-element
    ; Return Value ..: Success - Array[0] = left / Array[1] = top
    ; Failure - ''
    ; @ERROR -
    ; Author(s) .....: Thorsten Willert
    ; Date ..........: Fri May 22 23:20:05 CEST 2009
    ; Link ..........:
    ; Related .......:
    ; Example .......: No
    ; ==============================================================================
    Func _FF_GetElementPosition($sElement)
    Local $sJS = "FFau3.findPos=function findPos(obj){"
    $sJS &= "var curleft=curtop=0;"
    $sJS &= "if(obj.offsetParent){"
    $sJS &= "do{curleft+=obj.offsetLeft;"
    $sJS &= "curtop+=obj.offsetTop;"
    $sJS &= "}while(obj=obj.offsetParent);"
    $sJS &= "return curleft+' '+curtop;}}"
    If Not StringInStr(_FFCmd("repl.inspect(FFau3.findPos)"), "<function>.prototype") Then _FFCmd($sJS)

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

    Local $sPos = _FFCmd("FFau3.findPos(content.document." & $sElement & ")")
    If Not @error Then
    Local $aRet = StringSplit($sPos, ' ', 2)
    If Not @error Then
    $aRet[0] = Int($aRet[0])
    $aRet[1] = Int($aRet[1])
    Return $aRet
    EndIf
    EndIf

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

    SetError(1, 0, '')
    EndFunc ;==>_FF_GetElementPosition

    [/autoit]

    Für Maus-Klicker ;)

  • Nochmal was für Mausklicker:
    Ermittelt die Position des Dokuments (content) auf dem Bildschirm (Ergebnis siehe Hilfe zu ControlGetPos)

    [autoit]

    $a = ControlGetPos(_FFCmd(".title"), "", "[CLASS:MozillaContentWindowClass]")
    _ArrayDisplay($a)

    [/autoit]


    hilfreich falls man Applets oder Flash Anwendungen bedienen möchte.
    Zur Ermittlung der Element-Position selbst - siehe vorhergehender Beitrag.

    Löschen der History:

    [autoit]

    _FFCmd("Components.classes['@mozilla.org/browser/nav-history-service;1'].getService(Components.interfaces.nsIBrowserHistory).removeAllPages();")

    [/autoit]

    Löschen des Caches:

    [autoit]

    _FFCmd("Ci=Components.interfaces;Components.classes['@mozilla.org/network/cache-service;1'].getService(Ci.nsICacheService).evictEntries(Ci.nsICache.STORE_ANYWHERE);")

    [/autoit]
  • Folgendes Beispiel ist etwas spezieller, (war ein Problem im englischen und französischen Forum) aber bestimmt hin und wieder ganz brauchbar.

    Problem:
    Es soll das zweite "AAA" ausgwählt werden, aber die Values der Optionen sind bei jedem Seitenaufruf anderst:

    Lösung:
    Zuerst den Index der Option "Case 2" ermitteln:

    [autoit]

    $iIndexCase2 = _FFXPath("//select[@name='id_parent']//option[contains(.,'Case 2')]", "index",9)

    [/autoit]


    dann die Option "AAA" auswählen, deren Index größer als der von "Case 2" ist:
    Xpath-(Pseudo)-Ausdruck:

    Code
    //option[position() > " & $iIndexCase2 & " and contains(.,'AAA')]


    AutoIt:

    [autoit]

    _FFXPath("//select[@name='id_parent']//option[position() > " & $iIndexCase2 & " and contains(.,'AAA')]", "selected=true",9)

    [/autoit]


    "selected=true" wählt die Option aus.

  • "_FFPrefSet("network.proxy.http",8080)

    Fehler es muss network.proxy.http_port heißen und nicht network.proxy.http. :D

    Einmal editiert, zuletzt von Howik (26. Juni 2010 um 16:47)