您好,我正在编写代码,以自动登录到CIBC投资者边缘和我的代码只打开cibc投资者页面。我有一种感觉,这是我调用用户名和密码值的方式的问题。下面是通用代码和CIBC上被检查元素的元素快照。
Dim HTMLDoc As HTMLDocument
Dim MyBrowser As InternetExplorer
Sub MyInvEdge()
Dim MyHTML_Element As IHTMLElement
Dim MyURL As String
On Error GoTo Err_Clear
MyURL = "https://www.investorsedge.cibc.com/ie/"
Set MyBrowser = New InternetExplorer
Myrowser.Silent = True
MyBrowser.navigate MyURL
MyBrowser.Visible = True
Do
Loop Until MyBrowser.readyState = READYSTATE_COMPLETE
Set HTMLDoc = MyBrowser.document
HTMLDoc.all.userID.Value = "my ID"
HTMLDoc.all.userPassword.Value = "my password"
For Each MyHTML_Element In HTMLDoc.getElementsByTagName("input")
If MyHTML_Element.Type = "Sign On" Then MyHTML_Element.Click: Exit For
Next
Err_Clear:
If Err <> 0 Then
Err.Clear
Resume Next
End If
End Sub这两个元素的HTML代码如下:
<input name="userID" tabindex="3" id="userID" onkeydown="keyPressedEvt
(event,'newUserID');" type="text" maxlength="25" autocomplete="off">
<input name="userPassword" tabindex="4" id="userPassword" type="password"
maxlength="12" autocomplete="off">请帮我解决这个登录问题。谢谢,
发布于 2015-07-04 00:17:57
我认为:
HTMLDoc.all.userID.Value = "my ID"应该是这样的
HTMLDoc.GetElementByID("userID").Value ="my ID"(密码相同)
另外,在等待页面加载时,使用DoEvents将控制传递回处理器:
所以就像这样
While MyBrowser.ReadyState <> READYSTATE_COMPLETE
DoEvents
Wend而不是
Do
Loop Until MyBrowser.readyState = READYSTATE_COMPLETE最后,我不确定"Sign On“是不是一个超文本标记语言元素,所以在这里使用.Type是行不通的:
MyHTML_Element.Type = "Sign On"但是你还没有展示它的HTML ...
https://stackoverflow.com/questions/31210829
复制相似问题