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

使用vba按名称引用来自动化登录详细信息,vba,login,browser-automation,Vba,Login,Browser Automation,我一直在尝试从intranet数据站点自动检索数据。该站点受密码保护。我以前曾自动输入文本框,但是用户名和密码输入的输入标记没有设置id属性,这导致了我的问题 它们都设置了name属性,但我不确定如何使用此信息输入相关的用户名和密码详细信息 登录页面中的相关源代码: <form method=POST action='../authentication.asp' name=frmLogin target='_parent'> <table width='100%' height

我一直在尝试从intranet数据站点自动检索数据。该站点受密码保护。我以前曾自动输入文本框,但是用户名和密码输入的输入标记没有设置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对象。通常,当我在文本框中输入文本时,我使用类似于ie.document.getElementByIdUsername.innerText=Username的代码,但这显然是指在本例中未设置的id属性所指向的对象。我已经浏览了在线指南,很多人似乎都建议使用ie.document.allUsername启动代码,但我不确定如何正确使用它,而且我的intellisense似乎不喜欢all命令,因为我可以确定所有相关引用都已启用

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

您可以使用getElementsByTagNameinput。因为可能有多个结果…元素…,这将返回一个数组,第一个元素是用户名,第二个元素是密码

用法:

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

说明:


getElementsByTagName通过标记名(如等)获取网页元素,而不是代码片段中的ID。

谢谢。在我的登录子例程中,我将代码更改为ie.Document.getElementsByTagNameinput0.value=Username,这仍然会带来一个自动化错误。此子例程中没有其他代码,因为网页已打开并存储在名为ie的全局变量中。能否尝试:.getAttributevalue而不是.value?很遗憾,没有。我试过了,只是为了100%确定,但我还是收到了同样的错误。问题是我试图在文本框中设置文本,我对.getAttributevalue语句的理解是它是一个只读命令?好的,还有一个:-。在使用.value=设置值之前。。。您需要将焦点设置为该字段:getElementsByTagNameinput0.FocusI非常感谢您在这方面的帮助,不幸的是,仍然返回相同的错误消息。我仍在努力阅读这篇文章,有人提到这是一个内部网页面这一事实可能是一个问题,因此我甚至尝试使用行Set ie=New InternetExplorerMedium来声明internet explorer浏览器,而不是Set ie=New InternetExplorer和变量声明。这正变得越来越令人沮丧!
getElementsByTagName("input")(0) ' --> username
getElementsByTagName("input")(1) ' --> password
getElementsByTagName("input")(2) ' --> button