IE页面上的VBAbutton
我想要做的是打开一个网站,然后按下button。 我不能让它工作,所以我要求你们所有有经验的程序员!
buttonxmllogging是:
z-menu-item-inner-r"><span class="z-menu-item-space"></span></td></tr></tbody></table></a></td><td id="z_e6_mm" align="left" z.type="Menuit2" class="z-menu-item " style="padding-left:4px;padding-right:4px;" z.zcls="z-menu-item" z.top="true"><a href="/NTS/NTSBatchJobs.zul" class="z-menu-item-cnt"><table id="z_e6_mm!a" cellspacing="0" cellpadding="0" border="0" class="z-menu-item-body " style="width: auto;"><tbody><tr><td class="z-menu-item-inner-l"><span class="z-menu-item-space"></span></td><td class="z-menu-item-inner-m"><div><button id="z_e6_mm!b" type="button" class="z-menu-item-btn">**HIT ME** </button></div></td><td class="
我试图按下的button被命名为: HIT ME
我使用的代码是:
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
为什么不使用getElementByID("z_e6_mm!b")
方法返回该button的实例。 元素id在文档中是唯一的,不需要迭代。
Dim btn as Object Set btn = IE.Document.getElementByID("z_e6_mm!b") btn.Click
注:可能无法使用某些版本的IE浏览器。
另外值得注意的是,你可以有一个简单的区分大小写的比较返回false的问题,而不是点击button,因为: "Hit Me" != "HIT ME"
。 你可以通过强制对button的文本进行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