我要做的是打开一个网站,然后按一个按钮。我不能让它工作,所以我要求你们所有经验丰富的程序员!
按钮xml记录是:
Sub IE_Auto()
Dim i As Long
Dim IE As Object
Dim objElement As Object
Dim objCollection As Object
Set IE = CreateObject("InternetExplorer.Application")
IE.Visible = True
IE.Navigate "mysite"
Set elems = IE.Document.getElementsByTagName("button")
For Each e In elems
If e.Name = "Hit Me" Then
e.Click
Exit For
End If
Next e
End Sub
我想按的按钮名为: HIT ME
我使用的代码是:
{{1}}
答案 0 :(得分:2)
为什么不使用getElementByID("z_e6_mm!b")
方法返回该按钮的实例。元素 id 在文档中是唯一的,不需要迭代。
Dim btn as Object
Set btn = IE.Document.getElementByID("z_e6_mm!b")
btn.Click
注意:可能不适用于IE的某些版本。
另外值得注意的是,您可能会遇到一个简单的区分大小写比较错误的问题,并且永远不会点击按钮,因为:"Hit Me" != "HIT ME"
。您可以通过强制对按钮文本进行UCASE
或LCASE
评估来控制此操作,但这似乎不如使用ID属性可靠。
另请注意:这不是元素的.Name
,而是.InnerText
正如您所看到的,ID属性正在发生变化,因此您无法可靠地对其进行编程。在这种情况下,您将进行强力迭代,并比较一些非唯一属性,如innerText
:
Dim btn as Object
For each btn in IE.Document.getElementsByTagName("button")
If btn.innerText = "**HIT ME** " Then '<~~~ MODIFY AS NEEDED ###
btn.click
Exit For 'break out of the loop
End If
Next