使用按名称引用的 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 .
我一直在尝试从 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 .