Вход в AutoIT IE не находит объекты

Я заставил AutoIt работать со страницей входа в мой маршрутизатор. Однако для нашего переключателя HP Pro Curve... Я не могу заставить его работать...

#NoTrayIcon
#include <ie.au3>
$Address = "http://10.255.96.2/index.html"
$pwd="mypassword"

$oIE = _IECreate ($Address)
_IELoadWait($oIE)
$oForm = _IEFormGetObjByName ($oIE, "maindata")

for $stuff in $oForm
if $stuff.name = "password" and $stuff.type = "password" then _IEFormElementSetValue ($stuff, $pwd)
If $stuff.value == "Login" and $stuff.type = "submit" Then $stuff.click
Next

exit

Я получаю "H:\loginToSwitch.au3" (10): ==> Переменная должна быть типа "Объект".:

В основном «основные данные» неверны.

Вот HTML, если я щелкну правой кнопкой мыши на странице и просмотрю исходный код:

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<html><head>
<meta name=Copyright content="Copyright (c) 2005 HP Networks, Inc. All Rights Reserved.">
<meta http-equiv=Content-Type content="text/html; charset=iso-8859-1">
<meta http-equiv="Pragma" content="no-cache">
<title>HP Networks Web Interface</title>
<script src="/mainjs.js" language=javascript type="text/javascript"></script>
<script language="javascript" type="text/javascript">
//<!--
checkFrame();   // Ensure we are not within a frame
implementLoginFrames('login.html');
document.write('<noframes>');
//-->
</script>
</head>

<body BGCOLOR="#DAE3EB">
<center>
<font color="#008BD1" face="Arial, Helvetica, sans-serif"><B>Please ensure that your browser supports Frames and Javascript, and that they are both enabled.</b></font>
</center>
<script language="javascript" type="text/javascript">
//<!--
document.write('<\/noframes>');
//-->
</script>
</body>
</html>

Однако, когда я использую firefox для идентификации элементов... он дает мне совершенно другой код (из которого я получил кнопки и информацию о текстовом поле):

    <html>
    <head></head>
    <frameset framespacing="0" border="0" frameborder="0" rows="80,*">
        <frameset framespacing="0" border="0" frameborder="0" cols="*,22"></frameset>
        <frame src="login.html" noresize="" name="loginFrame" scrolling="auto">
            #document
                <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
                <html>
                    <head></head>
                    <body onload="loadConfiguration();">
                        <script type="text/javascript" language="javascript"></script>
                        <form onsubmit="return login();" name="tF" method="post" action="login.html">
                            <table class="container" style="height: 650px">
                                <tbody>
                                    <tr>
                                        <td class="container">
                                            <div class="container">
                                                <div class="loginbox">
                                                    <!--

                                                     Login box HTML code here... 

                                                    -->
                                                    <table class="login">
                                                        <tbody>
                                                            <tr>
                                                                <td id="devname" class="hdr style2" style="color: #ffffff; font-family: Arial, Helvetica, sans-serif;" colspan="2"></td>
                                                            </tr>
                                                            <tr>
                                                                <td class="hdr style2" valign="top"></td>
                                                                <td class="maindata">
                                                                    <input id="password" type="password" onkeypress="capsCheck(event);" size="20" name="password" maxlength="16"></input>
                                                                    <script type="text/javascript" language="javascript"></script>
                                                                    <input class="button" type="submit" style="position: relative; top: 2;" value="Login"></input>
                                                                    <br></br>
                                                                    <span id="passwd" class="default" style="display: none;"></span>
                                                                </td>
                                                            </tr>
                                                            <tr></tr>
                                                            <tr></tr>
                                                        </tbody>
                                                    </table>
                                                    <span id="wrong" class="warning" style="display: none;"></span>
                                                    <br></br>
                                                    <span id="capsmsg" class="warning" style="display: none;"></span>
                                                    <br></br>


                                                    It is recommended that you use a minimum of

                                                    <br></br>

                                                    Microsoft® Internet Explorer 5.5 to view the Inter…

                                                    <br></br>
                                                    <br></br>
                                                    <!--

                                                     Login box HTML end... 

                                                    -->
                                                </div>
                                            </div>
                                        </td>
                                    </tr>
                                </tbody>
                            </table>
                            <script type="text/javascript" language="javascript"></script>
                        </form>
                    </body>
                </html>
        </frame>
    </frameset>
    <noframes></noframes>
</html>

person ReportWarrior    schedule 26.08.2014    source источник
comment
Также это шоу, если я иду «отлаживать» на странице:   -  person ReportWarrior    schedule 26.08.2014


Ответы (1)


_IEFormGetObjByName() Возвращает объектную переменную, а не коллекцию.

Используйте _IETagNameAllGetCollection($oForm), чтобы перечислить все элементы внутри объекта. .

Редактировать:

Я внимательно просмотрел html и вижу, что поле пароля имеет атрибуты ID и NAME. Используйте _IEGetObjById, чтобы получить объект поля пароля.

#NoTrayIcon
#include <ie.au3>
$Address = "http://10.255.96.2/index.html"
$pwd="mypassword"

$oIE = _IECreate ($Address)
;_IELoadWait($oIE) Not needed because IECreate does wait for page to load by default.
$oPassword = _IEGetObjById($oIE, "password")
_IEFormElementSetValue ($oPassword, $pwd)

$oForm = _IEGetObByName($oIE, "tF")
_IEFormSubmit($oForm)
person Milos    schedule 28.08.2014