我是excel vba的初学者。 我正在尝试按ID单击html元素,但是它不起作用
这是我的网站代码... 我导航到网站并输入用户名和密码。没关系,就像我在代码中提到的那样,它们都可以正常工作,但是在我登录(我附加了一个图像链接)后,当我检查要单击的html时,它显示如下...
Sub WebAuto()
Dim objIE As New InternetExplorer
Dim oHTML_Element As IHTMLElement
Dim inputCollection As HTMLElementCollection
Dim i As HTMLInputElement
Dim obj As Object
objIE.Visible = True
objIE.Navigate ("***") 'for example
Do
DoEvents
Loop Until objIE.ReadyState = 4
objIE.Document.getElementById("uid").Value = "***" 'user ID typed
objIE.Document.getElementById("password").Value = "***" 'pw typed
With objIE.Document
Set obj = .getElementsByTagName("input")
'Debug.Print TypeName(aeiou)
For Each i In obj
If (i.getAttribute("value") = "Log In") Then
i.Click
Debug.Print "Logged In"
Do
DoEvents
Loop Until objIE.ReadyState = 4
End If
Next i
End With
End Sub
这是我关于堆栈溢出的第一个问题,因此,如果我有任何错误,请原谅我。谢谢大家。
答案 0 :(得分:-2)
您需要指定您的对象可以接受事件。
只需将其定义为Set obj = objIE.Document.getElementById("siteDetails")
不是永恒的。
您需要以下代码来指示对象发生事件:
Public WithEvents obj As OBJECT
在以上将OBJECT更改为类的过程中,您正在将对象初始化为(使用您定义obj的行,例如DIM obj为ABC)