IE au3. und Frames

  • Hallo Zusammen,

    ich beschäftige mich derzeit mit der IE.au3 und wollte aus diesem Anlass ein Script erstellen mit dem ich mein Router
    konfig Programm steuern kann.
    Aber ich scheitere schon bei der Password Eingabe weil die Seite Frames hat.
    Wie kann ich den Quelltext von einem Frame auslesen und die Input Box ansteuern?

    Spoiler anzeigen

    $oIE = _IECreate("speedport.ip")

    $oButton = _IEGetObjByName ( $oIE, "B1")
    _IEAction($oButton,"click")
    _IELoadWait($oIE);

    $oInput = _IEGetObjByName($oIE,"pass")
    _IEFormElementSetValue($oInput,"0815")

    anbei noch der Quelltext den ich mit _IEDocReadHTML erhalte

    Spoiler anzeigen

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN" "http://www.w3.org/TR/html4/frameset.dtd">
    <html>
    <head>
    <title>Konfigurationsprogramm</title>
    <script type="text/javascript">
    <!--
    function titel(){
    document.title = top.frames[0].prodname + " Konfigurationsprogramm";
    }
    var sechinw = true;
    // Prüfung ob Fenster geschlossen werden kann
    var http = false;
    function ajaxInit()
    {
    try {
    http = new ActiveXObject("Msxml2.XMLHTTP");
    } catch(e) {
    try {
    http = new ActiveXObject("Microsoft.XMLHTTP");
    } catch(yae) {
    http = false;
    }
    }
    if (!http && typeof XMLHttpRequest != 'undefined')
    {
    http = new XMLHttpRequest();
    }
    }
    var g_hidewarn = false;
    function sicherheitseinstellung(){
    if (g_hidewarn == true)
    return;
    ajaxInit();
    if (http)
    {
    http.open('GET',"/cgi-bin/webcm?getpage=../html/query.txt&var:cnt=2&var:n0=wlan:settings/ap_enabled&var:n1=wlan:settings/encryption",false);
    http.send(null);
    try
    {
    if (http.readyState==4 && http.status==200)
    {
    var resp = http.responseText;
    if (resp)
    {
    var part = resp.split(String.fromCharCode(10));
    if (part.length>1)
    {
    if (sechinw == true && part[0]=="1" && part[1]=="0")
    window.event.returnValue =
    "_______________________________________________________________________" +
    "\n" +
    "\n Sie haben die Einstellung im Bereich:" +
    "\n > Sicherheit / Verschlüsselung" +
    "\n nicht aktiviert. Wir empfehlen Ihnen zu Ihrer eigenen Sicherheit, diese Funktionalität einzuschalten." +
    "\n" +
    "\n Möchten Sie die Konfiguration wirklich Beenden, ohne die Verschlüsselung einzuschalten?" +
    "\n" +
    "_______________________________________________________________________\n";
    }
    }
    }
    }
    catch(e)
    {
    }
    }
    }
    //-->
    </script>
    </head>
    <frameset rows="49,*" border="0" frameborder="0" framespacing="0" onload="titel()" onbeforeunload="sicherheitseinstellung()">
    <frame src="/html/b_banner.htm" name="banner" scrolling=no noresize>
    <frameset cols="170,*" border=0 frameborder=0 framespacing=0>
    <frame src="/html/m_start_passwort.htm" name="menu">
    <frame src="/cgi-bin/webcm?getpage=../html/hcti_startseite.htm" name="hcti">
    </frameset>
    <noframes>
    <body >
    <p>Für diese Seite muss ihr Browser Frames darstellen können!</p>
    </body>
    </noframes>
    </frameset>
    </html>

    und der Frame in dem sich das Input feld id=pass befindet

    Spoiler anzeigen

    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/strict.dtd">
    <HTML>
    <HEAD>
    <TITLE>Startseite</TITLE>
    <script type="text/javascript" src="/html/js_menu.js"></script>
    <script type="text/javascript" src="/html/js_info.js"></script>
    <SCRIPT type="text/javascript">
    <!--
    if (top.frames[0])
    top.frames[0].dirty = true;

    var verz = 1;

    function chk()
    {
    top.frames[1].location.href = "/html/m_start_passwort.htm";
    infothema = "iStartPasswort";
    initInfo("verwaltung");
    if (top.frames[0].reboot_reason && top.frames[0].reboot_reason!='')
    {
    alert(top.frames[0].reboot_reason);
    top.frames[0].reboot_reason='';
    }
    var date = new Date();
    document.getElementById("PostTime").value= Math.floor(date.getTime()/1000) + "," + date.getTimezoneOffset();

    document.PWD.pass.focus();
    document.getElementById("verz").value = 2*verz;


    }
    function stReload()
    {
    document.location.href="/cgi-bin/webcm?getpage=../html/login.html";
    }
    function stVerg()
    {
    document.location.href="/html/vergessen.html";
    }
    function stOk(){
    if (checkEmpty())
    document.PWD.submit();
    }
    function checkEmpty(){
    if (document.getElementById('pass').value == "") {
    alert("Bitte geben Sie das Gerätepasswort ein!");
    document.getElementById('pass').focus();
    return false;
    }
    return true;
    }
    function stBak(){
    document.PWD.pass.disabled = false;
    document.PWD.pass.style.backgroundColor="#FFFFFF";
    document.PWD.pass.value = "";
    document.PWD.pass.focus();
    }
    function stEnd(){
    document.location.href = "/cgi-bin/webcm?getpage=../html/hcti_beenden.htm";
    }
    //-->
    </SCRIPT>
    <LINK rel="stylesheet" href="/html/style_nw.css" type="text/css">
    <STYLE type="text/css">
    #um0 {top: 140px; visibility: hidden}
    </STYLE>
    </HEAD>
    <BODY onload="chk()">
    <DIV id=frameEingabe>
    <DIV id=border>

    <DIV id=pfad>Speedport W 701V - Einstieg in die Konfiguration</DIV>

    <DIV class=lineThW></DIV>
    <DIV class=titel><DIV class=colVoll>Gerätepasswort Eingabe</DIV></DIV>
    <form name="PWD" method="POST" action="/cgi-bin/webcm" onsubmit="return checkEmpty();">
    <DIV class=rowStd>
    <DIV class=colLast>
    <input type="hidden" name="getpage" value="../html/hcti_startseite.htm">
    <input type="hidden" name="var:verz" id="verz">
    <input type="hidden" name="time:settings/time" id="PostTime">
    <input type="password" class="stylepwd" name="login:command/password" size="12" maxlength="12" id=pass>
    </DIV>
    <DIV class=colAbst></DIV>
    <DIV class=colLast>('0000' bei Auslieferung)</DIV>
    </DIV>

    </form>
    <DIV class=rowLeer></DIV>
    <DIV class=lineThW></DIV>
    <DIV class=rowLeer></DIV>
    </DIV>
    <DIV id=um0>
    <DIV class=rowText>Hinweis:<br>
    Die Wartezeit bis zur erneuten Eingabe verdoppelt sich<br>
    nach jeder Falscheingabe.<br>
    Dies erschwert den unbefugten Zugang zu Ihrem Router.
    </DIV>
    <DIV class=rowLeer></DIV>
    <DIV class=lineThW></DIV>
    <DIV class=rowLeer></DIV>
    </DIV>
    </DIV>
    <DIV id=frameBut>

    <DIV id=but1 onclick="stEnd()" onmouseover="rahmen(1,1)" onmouseout="rahmen(0,1)">Beenden&nbsp;&lt;&lt;</DIV>
    <DIV id=but2 onclick="stVerg()" onmouseover="rahmen(1,2)" onmouseout="rahmen(0,2)">Vergessen&nbsp;&lt;&lt;</DIV>
    <DIV id=but4 onclick="stOk()" onmouseover="rahmen(1,4)" onmouseout="rahmen(0,4)">&gt;&gt; OK</DIV>

    </DIV>
    <DIV id=frameInfo></DIV>
    </BODY>
    </HTML>

  • Mit

    [autoit]

    _IEFrameGetObjByName

    [/autoit]

    kannst du eine spezifischen Frame auswählen.

    Andy hat mir ein Schnitzel gebacken aber da war ein Raupi drauf und bevor Oscar das Bugfixen konnte kam Alina und gab mir ein AspirinJunkie.

  • Wie ist der Frame Name den ich ansprechen will, wenn ich das Input Feld Password ansprechen will.
    Habe folgende Angaben.
    <input type="password" class="stylepwd" name="login:command/password" size="12" maxlength="12" id=pass></DIV>

  • habe versucht den Frame anzusprechen aber komme nicht weiter

    Spoiler anzeigen

    $pframe=_IEFrameGetObjByName($oFrame,"menu")
    $1=_IEDocReadHTML($pframe)

    $oInput = _IEGetObjByName($pframe,"login:command/password")
    _IEFormElementSetValue($oInput,"1410")

  • html aus deinem posting: <input type="password" class="stylepwd" name="login:command/password" size="12" maxlength="12" id=pass>

    $pframe=_IEFrameGetObjByName($oFrame,"menu")
    $Form = _IEFormGetObjByName($pframe, "password")
    $Passwort = _IEFormElementGetObjByName($Form, "login:command/password")
    _IEFormElementSetValue($Passwort,"1410")

    vielleicht so
    lg neon

    Einmal editiert, zuletzt von neon_licht (6. Oktober 2010 um 10:59)

  • versuchs mal damit

    [autoit]


    Func _Frame($oBrowser)
    If _IEIsFrameSet($oBrowser) Then
    Return _IEFrameGetObjByName($oBrowser, "main")
    Else
    Return $oBrowser
    EndIf
    EndFunc

    [/autoit]