angepasste Browserfunktionen

  • Hallo liebe Community,

    Ich bin neu angemeldet in diesem Forum aber arbeite schon eine ganze Weile mit Autoit.

    hab auch schon eine etwas tiefgreifendere Frage...

    und zwar, es geht darum mir angepasste Funktionen für einen Browser zu schreiben ( ganz egal welcher, für dieses Bsp. will ich einfach mal Opera benutzen im vergleich mit Mozilla Firefox)

    um mal dabei mit etwas ganz einfachen anzufangen,... ich habe mich mal in der FF.au3 schlau gemacht und die Function _FFClick genauer betrachtet.

    [autoit]


    ; #FUNCTION# ===================================================================
    ; Name ..........: _FFClick
    ; Description ...: Simulates a click on an element.
    ; Beschreibung ..: Simuliert einen Klick auf ein Element.
    ; AutoIt Version : V3.3.0.0
    ; Syntax ........: _FFClick($sElement[, $sMode = "elements"[, $iIndex = 0]])
    ; Parameter(s): .: $sElement - Element to click on
    ; $sMode - Optional: (Default = "elements") :
    ; | elements
    ; | id
    ; | name
    ; | class
    ; | tag
    ; $iIndex - Optional: (Default = 0) : Index if $sMode = elements, name, tag
    ; Return Value ..: Success - 1
    ; Failure - 0
    ; @ERROR -
    ; Author(s) .....: Thorsten Willert
    ; Date ..........: Thu Apr 09 21:18:33 CEST 2009 @846 /Internet Time/
    ; Link ..........:
    ; Related .......: _FFClickXY, _FFImageClick, _FFLinkClick, _FFObjGet
    ; Example .......: Yes
    ; ==============================================================================
    Func _FFClick($sElement, $sMode = "elements", $iIndex = 0)
    Local $sFuncName = "_FFClick"

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

    If Not IsInt($iIndex) Then
    SetError(__FFError($sFuncName, $_FF_ERROR_InvalidDataType, "(int) $iIndex: " & $iIndex))
    Return 0
    EndIf

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

    Switch StringLower($sMode)
    Case "elements"
    If StringLeft($sElement, 7) = "OBJECT|" Then $sElement = StringMid($sElement, 8)
    Case "id"
    $sElement = ".getElementById('" & $sElement & "')"
    Case "name"
    $sElement = ".getElementsByName('" & $sElement & "')[" & $iIndex & "]"
    Case "class"
    $sElement = ".getElementsByClassName('" & $sElement & "')[" & $iIndex & "]"
    Case "tag"
    $sElement = ".getElementsByTagName('" & $sElement & "')[" & $iIndex & "]"
    Case Else
    SetError(__FFError($sFuncName, $_FF_ERROR_InvalidValue, "(elements|id|name|class|tag) $sMode: " & $sMode))
    Return 0
    EndSwitch

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

    If StringLeft($sElement, 1) = "." Then $sElement = "window.content.document" & $sElement

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

    Local $RetVal = _FFCmd("FFau3.simulateClick(" & $sElement & ",0,0);")
    If Not @error And $RetVal <> "_FFCmd_Err" And $RetVal = 1 Then
    Sleep(25)
    Return $RetVal
    Else
    SetError(__FFError($sFuncName, $_FF_ERROR_NoMatch, "$sElement: " & $sElement))
    Return 0
    EndIf

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

    EndFunc ;==>_FFClick

    [/autoit]

    Aufgefallen ist mir dabei das es um an die verschiedenen Objekte zu kommen, JavaScript nutzt.
    Aber mir ist z.B. nicht ganz klar was das $sElement darstellt bzw. was dafür eingetragen wird (ich denke es ist ein String wegen dem präfix)

    Es geht mir auch darum, wie kann ich verschiedene Objekte auslesen und den Focus bestimmen? Anscheinend geht es ja über JavaScript zu realisieren, aber wie wird so ein befehl genau geschrieben in Autoit - siehe document.getElementById("Button").value.
    Oder muss zwangsweise der Quellcode ausgelesen und geprüft werden nach Buttons in diesem Beispiel?

    Ich hoffe ihr könnt mir weiterhelfen ;D

    ty