使用按名称引用的 vba 自动登录详细信息

Automate login details using vba referencing by name

我一直在尝试从 Intranet 数据站点自动检索数据。该站点受密码保护。我之前有自动文本框输入,但是用于用户名和密码输入的 input 标签 not 有一个 id 属性 设置导致我出现问题。

他们都有一个 name 属性 设置,但是我不确定如何使用此信息来输入相关的用户名和密码详细信息。

登录页面的相关源代码:

<form method=POST action='../authentication.asp' name=frmLogin target='_parent'>
<table width='100%' height='100%'>
    <tr><td align=center valign=middle>
        <table class=dialogOuter>
            <tr class=dialogTitle><td>Logon</td></tr>
            <tr><td>
                <table class=dialogInner>
                    <tr>
                        <td width=100>User Name</td>
                        <td><input name=Username /></td>
                    </tr>
                    <tr>
                        <td>Password</td>
                        <td><input type=password name=Password /></td>
                    </tr>
                    <tr>
                        <td colspan=2 align=right>
                            <input class=Button type=submit value=Logon />
                        </td>
                    </tr>
                </table>            
            </td></tr>
        </table>
    </td></tr>
    <tr>
        <td align=center valign=bottom>Version: 4.4.1.8
  </td>
    </tr>
</table>            
<!-- Set the UserName input field to take focus, improved useability -->
<script language="JavaScript">
<!--
document.frmLogin.Username.focus();
//-->
</script>
</form>

正在使用变量 ie 表示 Internet Explorer 对象的 class 模块中调用该网站。通常,当我在文本框中输入文本时,我使用类似于 ie.document.getElementById("Username").innerText = Username 的代码,但这显然是通过 id 属性 引用的对象,这不是在此设置的案件。我浏览了在线指南,很多人似乎推荐代码以 ie.document.all("Username") 开头,但是我不确定如何正确使用它,而且我的智能感知似乎不喜欢 all 命令(据我所知,所有相关参考均已启用)。

我只需要在用户名和密码文本框中输入一个字符串,因为我很熟悉之后如何提交表单。

您可以使用 getElementsByTagName("input")。因为可能有多个结果 ("...Elements..."),这将 return 一个数组,第一个元素是用户名,第二个密码。

用法:

getElementsByTagName("input")(0) ' --> username
getElementsByTagName("input")(1) ' --> password
getElementsByTagName("input")(2) ' --> button

要读取或写入字段的内容,请使用 .Value 属性。

解释:

getElementsByTagName() 通过标签名称(例如 <a><b><body> 等)获取网页元素,而不是像您的代码片段中的 ID .