"_IECreate" Probleme

  • Hallo zusammen.

    Ich habe eine Frage bezüglich "_IECreate".

    Hier einmal der Code;

    [autoit]


    #include <IE.au3>
    $url = "https://blabla.com"
    Global $oIE = _IECreate($url)
    $oform = _IEFormGetCollection($oIE, 0)

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

    ;Anmeldedaten
    $sUsername = ''
    $sPassword = ''
    $oname = _IEFormElementGetObjByName($oform , "username")
    $opasswd = _IEFormElementGetObjByName($oform , "password")
    $obutton = _IEFormElementGetObjByName($oform , "login")
    $setname = _IEFormElementSetValue($oname, $sUsername)
    $setpasswd = _IEFormElementSetValue($opasswd, $sPassword)

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

    ;Links
    $IEaccounts = "https://"
    $CPtup001 = "https://"
    $BackupTup001 = "https://"

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

    ;Anmeldung wird ausgeführt
    _IEAction($obutton, "click")
    _IELoadWait($oIE)

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

    _IENavigate ($oIE, $IEaccounts)
    _IELoadWait($oIE)
    _IENavigate ($oIE, $CPtup001)
    _IELoadWait($oIE)
    _IENavigate ($oIE, $BackupTup001)
    _IELoadWait($oIE)

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

    ;Nun muss ich, damit ich einen Button klicken kann der oben noch nicht "geladen"
    ;wurde, die Form neu laden

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

    $url2Download = "https://www.anderer.link.com"
    Global $oIE2Download = _IECreate($url2Download )
    $oform2Download = _IEFormGetCollection($oIE2Download, 0)
    $oButton2Download = _IEFormElementGetObjByName($oform2Download , "dbbackup")
    _IEAction($oButton2Download, "click")

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

    ;Leider macht es ein neues Fenster auf (Logisch _IECreate) und dass
    ;möchte ich nicht ;)

    [/autoit]

    Das "Problem" ist, wenn ich eine Form neu laden will resp. der neue "Download Button", öffnet es mir ein neues IE-Fenster (schaue Code) und dies möchte ich nicht.
    Leider habe ich noch keine andere Möglichkeit gefunden...

    Besten Dank für eure Hilfe =)

  • Und was ist nun das Problem? Benutz eben _ienavigate wenn du kein neues Fenster aber eine andere Webseite aufrufen willst.

    [autoit]


    #include <IE.au3>
    $url2Download = "https://www.anderer.link.com"
    ;Hier unten IENavigate zu setzten geht nicht
    Global $oIE2Download = _IENavigate($url2Download )
    $oform2Download = _IEFormGetCollection($oIE2Download, 0)
    $oButton2Download = _IEFormElementGetObjByName($oform2Download , "dbbackup")
    _IEAction($oButton2Download, "click")

    [/autoit]

    Das Problem ist, ich weis nich wie ich die neue Form laden kann ohne das ein weiteres Fenster aufgeht... Mit _IENavigate ist mir schon klar was dies bewirkt aber ich möchte die Form neu laden damit ich einen Button ansprechen kann. Wenn ich jedoch wie oben

    [autoit]

    Global $oIE = _IECreate($url)
    $oform = _IEFormGetCollection($oIE, 0)

    [/autoit]

    Diesen Code verwende geht ein neues Fenster auf... und dies möchte ich nicht

  • Macht dein Beispiel nicht einfach ein "Refresh"? 8|

    Wenn ich;

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

    _IEAction($oIE, "refresh")
    _IELoadWait($oIE)
    $oButton2Download = _IEFormElementGetObjByName($BackupTup001,"dbbackup")
    _IEAction($oButton2Download, "click")

    [/autoit]

    Dies anwende funktioniert dies leider nicht.


    Ich denke, ihr versteht mich falsch. Nochmals:

    [autoit]

    #include <IE.au3>
    $url = "https://admin.com/Auth/Login"
    Global $oIE = _IECreate($url)
    $oform = _IEFormGetCollection($oIE, 0)

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

    ;Anmeldedaten
    $sUsername = ''
    $sPassword = ''
    $oname = _IEFormElementGetObjByName($oform , "username")
    $opasswd = _IEFormElementGetObjByName($oform , "password")
    $obutton = _IEFormElementGetObjByName($oform , "login")
    $setname = _IEFormElementSetValue($oname, $sUsername)
    $setpasswd = _IEFormElementSetValue($opasswd, $sPassword)

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

    ;Links
    $IEaccounts = "https://admin.com/accounts"
    $CPtup001 = "https://admin.com/Detail?_action_panelLogin&uid=124578"
    $BackupTup001 = "https://www.admin.com/Backup/Overview"

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

    ;Anmeldung wird ausgeführt
    _IEAction($obutton, "click")
    _IELoadWait($oIE)
    _IENavigate ($oIE, $IEaccounts)
    _IELoadWait($oIE)
    _IENavigate ($oIE, $CPtup001)
    _IELoadWait($oIE)
    _IENavigate ($oIE, $BackupTup001)
    _IELoadWait($oIE)

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

    ;Hier wird die Form neu geladen und der Download durch das betätigen des Buttons ausgeführt
    ;Leider wird eine neues IE Fenster gestartet, was ich aber nicht möchte.
    ;D.h suche ich eine möglichkeit die Form neu zu laden ohne ein neues Fenster
    ;zu öffnen

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

    Global $oIE2Download = _IECreate($BackupTup001 )
    $oform = _IEFormGetCollection($oIE2Download, 0)
    _IELoadWait($oIE2Download)
    $oButtonDownload = _IEFormElementGetObjByName($oform , "dbbackup")
    _IELoadWait($oIE2Download)
    _IEAction($oButtonDownload, "click")

    [/autoit]

    Steht alles im Code...

    Besten Dank für eure Nerfen sowie Hilfeleistung.

    Einmal editiert, zuletzt von PHIPU (20. Juli 2011 um 10:51)

  • Du scheinst das Prinzip nicht ganz zu verstehen. IE_Create liefer dir ein Objekt des IE Fensters, vergleichbar mit einem Windowhandle. Willst du also eine neue URL im Fenster öffnen musst du natürlich das Fensterobjekt auch angeben. Willst du die Elemente der neuen Seite auslesen, gibst du ebenfalls das Fensterobjekt an. Das kannst du für jede Seite beliebig oft wiederholen. Hab dir das mal so eingebaut und entsprechende Debugmeldungen untergebracht. Dann kannst du auch sehen was nun nicht klappt und warum. Infos zu den Fehlercodes findest du in den jeweiligen Hilfeienträgen der Funktion.

    [autoit]


    ;Hier wird die Form neu geladen und der Download durch das betätigen des Buttons ausgeführt
    ;Leider wird eine neues IE Fenster gestartet, was ich aber nicht möchte.
    ;D.h suche ich eine möglichkeit die Form neu zu laden ohne ein neues Fenster
    ;zu öffnen

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

    $oIE2Download = _IEnavigate($oie,$BackupTup001,1) ; öffnet url im anfangs erstellten Fenster und wartet bis diese vollständig geladen wurde...
    if @error then msgbox(0,"Fehler","Seite konnte nicht geladen werden. Fehlercode: " & @error )
    $oform = _IEFormGetCollection($oIE, 0) ; standard ist eigentlich -1, wenn das hier also nicht klappt stimmt vielleicht dein index nicht
    if @error then msgbox(0,"Fehler","Form Collection konnte nicht ermittelt werden. Fehlercode: " & @error )
    $oButtonDownload = _IEFormElementGetObjByName($oform , "dbbackup")
    if @error then msgbox(0,"Fehler","FormElement konnte nicht ermittelt werden. Fehlercode: " & @error )
    _IEAction($oButtonDownload, "click")
    if @error then msgbox(0,"Fehler","Klick war fehlerhaft. Fehlercode: " & @error )

    [/autoit]