Hilfe bei Arbeit mit IE.au3

    • Offizieller Beitrag

    Hi,
    da recht häufig Anfragen kommen, wie denn auf Objekte in Websites zugegriffen wird, stelle ich mal mein Skript rein, mit dem ich Form- und Element- Index aller verfügbaren Formelemente einer Seite ermittle.
    Ich habe auch alles kommentiert, damit ihr wißt, was dort passiert.

    Spoiler anzeigen
    [autoit]

    #include <ie.au3>

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

    Global $url = "http://www.autoit.de/jgs_portal.php?sid="
    Global $oIE = _IECreate($url) ; IE-Objekt für die URL erstellen
    ; übrigens:
    ; _IELoadWait ist nicht notwendig, der 4.te Parameter von _IECreate ist bereits per default auf "wait" gesetzt!
    Global $i = 0, $k = 0

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

    $oForm = _IEFormGetCollection($oIE) ; Objekt mit allen Formen der URL erstellen
    If IsObj($oForm) Then
    For $form In $oForm ; für jede Form im Objekt Form
    $oElement = _IEFormElementGetCollection($form) ; Zusammenstellung aller Formelemente dieser Form
    If IsObj($oElement) Then
    For $element In $oElement ; für jedes Element dieser Form
    ConsoleWrite('Form: ' & $i & ', Element: ' & $k & ' ' & $element.name & @CRLF)
    ; Index von Form / Element und Name des Elements in Console schreiben
    $k += 1 ; Elementindex um eins erhöhen
    Next
    EndIf
    $i += 1 ; Formindex um eins erhöhen
    $k = 0 ; Elementindex auf Null zurücksetzen
    Next
    EndIf

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

    _IEQuit($oIE) ; Objekt IE löschen

    [/autoit]


    Edit: Hier mal noch analog zum Ermitteln des Table-Index:

    Spoiler anzeigen
    [autoit]

    #include <ie.au3>
    #include <array.au3>
    Global $url = "http://www.autoit.de/jgs_portal.php?sid="
    Global $oIE = _IECreate($url) ; IE-Objekt für die URL erstellen
    Global $arTable, $i = 0

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

    $oTable = _IETableGetCollection($oIE) ; Objekt mit allen Tabellen der URL erstellen
    If IsObj($oTable) Then
    For $table In $oTable ; für jede Tabelle im Objekt Tabellen
    _ArrayDisplay(_IETableWriteToArray($table), 'Tabellen-Index: ' & $i) ; gibt Tabelle in ein Array aus
    $i += 1
    Next
    EndIf

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

    _IEQuit($oIE) ; Objekt IE löschen

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

    ; Tabellen sind beim Auslesen meist gespiegelt
    ; Mit _Array2DMirror() aus meiner Signatur könnt ihr sie wieder 'zurückspiegeln'

    [/autoit]